我有一个Windows批处理文件,用于读取文件并获取一些信息,例如机器IP,然后打印该机器的一些注册表值,类似于以下内容:
for /f "skip=1 tokens=1,2,3,4,5,6,* delims=;" %%a in ('findstr /R "^" z:\csp\levantamento\levantamentoNOVO.csv') do (
set /A "HOME=0"
:cicle
echo HOME%HOME%
echo \\%%c\HKLM\SOFTWARE\ORACLE\HOME%HOME%
reg query \\%%c\HKLM\SOFTWARE\ORACLE\HOME%HOME% /v ORACLE_HOME
if %HOME% leq 3 (
set /A "HOME+=1"
goto cicle
) else (
echo.
)
echo Conenction to %%a deleted
)
以下是我的输出结果:
HOME0 \\10.13.3.27\HKLM\SOFTWARE\ORACLE\HOME0
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 ORACLE_HOME REG_EXPAND_SZ d:\oracle\806
HOME1 \\%c\HKLM\SOFTWARE\ORACLE\HOME1 错误:找不到网络路径。 HOME2 \\%c\HKLM\SOFTWARE\ORACLE\HOME2 错误:找不到网络路径。 HOME3 \\%c\HKLM\SOFTWARE\ORACLE\HOME3 错误:找不到网络路径。 HOME4 \\%c\HKLM\SOFTWARE\ORACLE\HOME4 错误:找不到网络路径。
与 %a 的连接已删除
当我执行 goto cicle 时,似乎 FOR 循环不再知道 %%c 和 %%c 是什么。我真的不知道我做错了什么。
for
循环内使用goto
命令,则for
循环将被取消,不再进行迭代,并且for
可替换的参数/变量超出范围。 - MC NDfor /l %%x in (0 1 3) do ....
命令替换你的内部循环。 - MC ND