Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 对于令牌,批处理命令可以';t隐藏错误“;错误:系统无法找到…”;_Batch File_Cmd - Fatal编程技术网

Batch file 对于令牌,批处理命令可以';t隐藏错误“;错误:系统无法找到…”;

Batch file 对于令牌,批处理命令可以';t隐藏错误“;错误:系统无法找到…”;,batch-file,cmd,Batch File,Cmd,我正在做一个简单的脚本来检查MS Office版本读取注册表键值。将出现密钥不存在(未安装office)的情况,我多次使用reg.exe query key/Check 2>nul,但无法在FOR行中使用。 这是一行: FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" ^| %SystemRoot%\System32\findstr

我正在做一个简单的脚本来检查MS Office版本读取注册表键值。将出现密钥不存在(未安装office)的情况,我多次使用reg.exe query key/Check 2>nul,但无法在FOR行中使用。 这是一行:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a
我试过:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" 2>nul ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a

在许多其他地方,但我最终犯了一个错误:

> was unexpected at this time.
任何人都知道我如何隐藏错误:

ERROR: The system was unable to find the specified registry key or value.
在那条线里面


谢谢

在Jeb回复的同时,我发现一篇帖子(实际上与此无关)使用了2^>nul。我不知道为什么^,但它起作用了

最后一行是:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" 2^> nul ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a

谢谢

2^>nul
。@jeb谢谢!我刚刚发现了同样的问题,仍然不确定他们为什么在FOR中使用“^”,但将阅读:)从您的问题中,我不知道您是否试图通过单击运行或MSI安装的Office产品来确定版本。如果它是2019年之前的MSI版本,请随意查看哪些可以这样做(在这种情况下,请使用“产品”一词)。如果您有任何特定于该答案的问题,请随时在该答案下进行适当的评论。原因是:FOR中的命令由批处理解析器解析,当存在类似
|
的未转义字符时,它将用于
FOR
命令本身,而不是
reg.exe
命令,这总是失败的。和你毫无疑问地完成的
^ |
一样。谢谢你提供的信息,我真的很感激!)
FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" 2^> nul ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a