DOS批处理FOR命令必须打开cmd窗口后执行才成功,为何呢?

时间:2022-06-01 17:56:50
试图用下面的命令,读取注册表键值,然后打开键值所对应的文件夹:

FOR /F "usebackq skip=4 delims=REG_SZ tokens=2" %k IN (`REG QUERY "HKLM\SOFTWARE\TeamViewer\Version7" /v "InstallationDirectory"`) DO if NOT "%k"=="" set v=%k
set p=%v:~1%
explorer.exe "%p%"
exit

不幸的是,以上命令,如果先打开cmd窗口,然后粘贴过去执行,则能够成功打开文件夹。
如果保存成bat文件,然后执行bat,则无法打开文件夹。

百思不得其解,这是为什么呢???

附:其中的REG QUERY命令返回的结果如下:
行1:
行2:! REG.EXE VERSION 3.0
行3:
行4:HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version7
行5:    InstallationDirectory REG_SZ C:\Program Files\TeamViewer\Version7
行6:
行7:

2 个解决方案

#1


运行的功能是有限的吧

#2


终于找到原因了,是%的问题,在bat中FOR命令的%必须改为%%。

#1


运行的功能是有限的吧

#2


终于找到原因了,是%的问题,在bat中FOR命令的%必须改为%%。