我有一个非常大的预先存在的批处理文件,我需要添加一些逻辑来运行正确的EXE,具体取决于它是x86还是x64位机器。我无法使用PowerShell,因为出于某种原因,他们在大多数这些机器上都禁用了伪。
我尝试做的是使用PSEXEC从远程获取系统变量PROCESSOR_ARCHITECTURE,然后从输出创建本地系统变量。
如果我从Win10x64 CMD提示符运行此命令:
C:\PsTools>c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^%PROCESSOR_ARCHITECTURE^%
我获得了正确的远程x86值,但无法对其执行任何操作:
x86
cmd exited on TEST-Win7x86 with error code 0
我尝试测试this method以将输出变为变量:
FOR /F "delims=" %i IN ('c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^%PROCESSOR_ARCHITECTURE^%') DO set proc=%i
我收回了当地的AMD64值:
cmd exited on TEST-Win7x86 with error code 0.
C:\PsTools>set proc=AMD64
有人发现我做错了吗?
谢谢!
-Matt
答案 0 :(得分:0)
在一天中大部分时间都搞乱了,我想我在提交这个问题后不久就知道了。由于某种原因,我不得不加倍胡萝卜。我不确定为什么我会尝试它或为什么它可以工作,但我现在得到正确的输出。
C:\PsTools>FOR /F %i IN ('c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^^%PROCESSOR_ARCHITECTURE^^%') DO set proc=%i
输出:
cmd exited on TEST-KW-O3040MD with error code 0.
C:\PsTools>set proc=x86
正如aschipfl在下面更正的那样,这是批处理脚本中的正确上下文。谢谢aschipfl!
FOR /F %%i IN ('"\\Server\Shared Folder\PSEXEC.exe" \\TEST-Win7x86 cmd /c echo ^^%%PROCESSOR_ARCHITECTURE^^%%') DO set PROC=%%i