【发布时间】:2014-08-24 12:23:14
【问题描述】:
我有一个 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
)
我的输出是这样的:
主页0 \\10.13.3.27\HKLM\SOFTWARE\ORACLE\HOME0 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 ORACLE_HOME REG_EXPAND_SZ d:\oracle\806 首页1 \\%c\HKLM\SOFTWARE\ORACLE\HOME1 错误:未找到网络路径。 主页2 \\%c\HKLM\SOFTWARE\ORACLE\HOME2 错误:未找到网络路径。 主页3 \\%c\HKLM\SOFTWARE\ORACLE\HOME3 错误:未找到网络路径。 主页4 \\%c\HKLM\SOFTWARE\ORACLE\HOME4 错误:未找到网络路径。 与 %a 的连接已删除当我执行 goto cicle 时,FOR 循环似乎不再知道 %%c 和 %%c 是什么。我真的不知道我做错了什么。
【问题讨论】:
-
如果在
for循环中使用goto命令,for将被取消,不再有迭代,for可替换参数/变量超出范围。 -
好吧……不知道……
-
那么,有没有办法做我想做的事?
-
用
for /l %%x in (0 1 3) do ....命令替换你的内部循环。 -
谢谢!非常感谢!!!
标签: windows batch-file for-loop goto