为什么这个bat文件忘记了%% a after:theFound?我试图理解For / f是如何工作的,但是在%theFound
之后忘记了%% a感谢您的光临。
FOR /F %%a in (c:\temp\computers.txt) do (
echo %%a
set comPort=0
:comLoop
set /a comPort=%comPort%+1
reg query \\%%a\HKEY_LOCAL_MACHINE\SOFTWARE\Pergamon\AKT\Dienst\XFS\PASION_CM24_COM%comPort%
if errorlevel 0 goto theFound
if %comPort% LSS 10 goto comLoop
echo No CRU found >>c:\temp\output1.txt
:theFound
reg query \\%%a\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOSA/XFS_ROOT\SERVICE_PROVIDERS\PASION_CM24_COM%comPort%\Firmware>>c:\temp\output1.txt
)
答案 0 :(得分:5)
在循环内跳转不起作用,它会打破循环。相反,您可以调用子例程(以%%a
作为参数 - 在子例程中它被引用为%1
=“第一个参数”)。在子程序中,您可以根据需要跳转:
FOR /F %%a in (c:\temp\computers.txt) do call :doit %%a
goto :eof
:doit
set comPort=0
:comLoop
set /a comPort=%comPort%+1
reg query \\%1\HKEY_LOCAL_MACHINE\SOFTWARE\Pergamon\AKT\Dienst\XFS\PASION_CM24_COM%comPort%
if errorlevel 0 goto theFound
if %comPort% LSS 10 goto comLoop
echo No CRU found >>c:\temp\output1.txt
:theFound
reg query \\%1\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOSA/XFS_ROOT\SERVICE_PROVIDERS\PASION_CM24_COM%comPort%\Firmware>>c:\temp\output1.txt
goto :eof
(加分:你不需要delayed expansion)