Cmd 批传递给For循环的这些REG查询命令之间的差异,尾随'\';s
出于某种原因,第一个For循环工作,而第二个For循环失败。Cmd表示它不希望在(%id%)之后出现尾随的“\” 所以我必须这样写Cmd 批传递给For循环的这些REG查询命令之间的差异,尾随'\';s,cmd,Cmd,出于某种原因,第一个For循环工作,而第二个For循环失败。Cmd表示它不希望在(%id%)之后出现尾随的“\” 所以我必须这样写 for /f "tokens=3" %%i in ('REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%n%\ /v InstallDir') do set dir=%%i for /f "tokens=3" %%i in ('REG QUERY HKLM\SOFTWARE\Mi
for /f "tokens=3" %%i in ('REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%n%\ /v InstallDir') do set dir=%%i
for /f "tokens=3" %%i in ('REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%n%(%id%)\ /v InstallDir') do set dir=%%i
有人知道为什么在第一个for循环中尾随“\”是可接受的,而在第二个for循环中不是可接受的吗
CausingUnderflow SeveryWhere提出的完全有效的问题,可能对具有类似问题的其他人有用,但不幸的是,由于结论不正确而过早删除
(作为记录事项)使用前面的插入符号()来转义(有问题的),以告诉batch,右括号是数据的一部分,而不是命令的一部分
(正如我所说,这只是为了纠正一个误解)使用双引号将所有违规字符转义,如下所示:
for /f "tokens=3" %%i in ('REG QUERY HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%name%(%a%) /v InstallDir') do set dir=%%i
即使%n%
或%id%
包含空格字符,也应能正常工作
重要信息:双引号注册表项名称中没有尾随的\
反斜杠
使用另一个包含空格、()
括号、|
垂直线(管道)、
重定向器的注册表项进行验证
for /f "tokens=3" %%i in ('
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%n%(%id%)" /v InstallDir
') do set "dir=%%i"
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Connection Manager
HKLM\SOFTWARE\Microsoft\Transaction Server\Setup(OCM)
HKLM\SYSTEM\CurrentControlSet\Control\Print\Forms\B5(ISO)
HKCR\Installer\Assembly\C:|程序文件(x86)| Microsoft帮助查看器| v2.1 | HlpViewer.exe
HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Intel(R)ME应用程序
HKLM\SOFTWARE\Microsoft\Fax\Outbound Routing\Groups\
@CausingUnderflowsEverywhere:“哦,在For循环中,您的命令不能包含括号,否则它将关闭For循环……我明白了。”呃,不。解决方案非常简单。您需要使用前面的插入符号(^
)来转义有问题的)
,以告诉batch,右括号是数据的一部分,而不是命令的一部分
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Connection Manager
HKLM\SOFTWARE\Microsoft\Transaction Server\Setup(OCM)
HKLM\SYSTEM\CurrentControlSet\Control\Print\Forms\B5 (ISO)
HKCR\Installer\Assemblies\C:|Program Files (x86)|Microsoft Help Viewer|v2.1|HlpViewer.exe
HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\Intel(R) ME Application
HKLM\SOFTWARE\Microsoft\Fax\Outbound Routing\Groups\<All devices>