1

スクリプトを実行しようとすると、常に「エコーがオンです」というメッセージが表示されます。

setlocal ENABLEEXTENSIONS
C:
cd ..
cd ..
reg query "HKLM\SYSTEM\CurrentControlSet\Services" | findstr /b "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DummyService" > "C:\servicePaths.txt"
FOR /f "delims=" %%g IN (servicePaths.txt) do (
  set KEY_NAME="%%g"
  set VALUE_NAME=ImagePath
    FOR /F "tokens=1-3" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO (
    set ValueValue=%%C
    )
  echo %ValueValue%
  pause
)

バッチの第一人者は私を助けてくれますか?カスケードされたforループと関係があることは知っていますが、解決策を見つけることができません。3時間の試行とエラーの後、もう手がかりはありません。

4

1 に答える 1

2

%ValueValue%これは、完全な括弧ブロックが解析されるときに発生するため、を展開する際の問題です。
実行時ではなく、解析時にValueValue変数が空であるため、echoどちらが出力されるかのみを取得しますecho is on

遅延拡張に変更するだけです

@echo off
setlocal EnableDelayedExpansion
C:
cd ..
cd ..
set VALUE_NAME=ImagePath

reg query "HKLM\SYSTEM\CurrentControlSet\Services" | findstr /b "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DummyService" > "C:\servicePaths.txt"
FOR /f "delims=" %%g IN (servicePaths.txt) do (
  set "KEY_NAME=%%g"
    FOR /F "tokens=1-3" %%A IN ('REG QUERY !KEY_NAME! /v !VALUE_NAME! 2^>nul') DO (
    set ValueValue=%%C
    )
  echo !ValueValue!
  pause
)
于 2012-08-31T08:12:07.880 に答える