2012-04-27 22 views
4

BATファイルの環境変数にREG値を読み込もうとしています。例えば、REG値を環境変数に読み込む方法

REG HKLM \ SYSTEM \ CURRENTCONTROLSET \サービス\イベントログ/ V用のImagePath

私はREGの全体の出力文字列を取得することができますが、このように環境変数にコマンドを実行します。ただし

FOR /F "usebackq delims==" %%a in (`REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath`) DO set ImagePath=%%a 

、これは、全体のラインに環境変数を設定し、すなわち、

ImagePath REG_EXPAND_SZ C:\Windows\system32\services.exe 

私は環境変数は、パスのみの部分から成るようにしたい、すなわち、

C:\Windows\system32\services.exe 

ありがとうございます。

答えて

7
for /f "tokens=2*" %%A in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath') DO set ImagePath=%%B 

デフォルトの区切り文字はスペースとタブです。それを変更する必要はありません。 TOKENS = 2 *は、%% Aに2番目のトークンを格納し、%% Bに残りの行を格納します。

元のコードについては、状況に応じてUSEBACKQを使用する利点はありません。また、デリミタとして使用したため、コードに=が含まれていれば、コード全体が保持されません。あなたは、パスに空白が含まれていないという事実に頼ることができる場合

回答が
をコメントすること、そして、あなたは単に%%「TOKENS = 3」を使用して保存することができます。しかし、私はそれを信じません。代わりに、私は使用します

for /f "tokens=2*" %%A in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath') DO (
    for %%F in (%%B) do (
    set ImagePath=%%F 
    goto :break 
) 
) 
:break 
+0

素晴らしいです。ありがとう。ただ私はそれをさらに一歩踏み出さなければならないことに気づいた。 ImagePathは次のようになります: "C:¥Windows¥system32¥services.exe"パラメータ –

+0

@Neilw - 更新された回答 – dbenham

関連する問題