【发布时间】:2016-01-28 21:28:40
【问题描述】:
我以为我曾经有过这个工作,但最近我的命令停止工作。我在国内外的研究并没有发现我还没有尝试过的任何东西。也许SETX 正在查看我缺少的其他一些变量?
我的命令:
setx /s servername PATH "%Path%";"c:\program files (x86)\java\jre7\bin";"c:\program files (x86)\java\jre7\bin\client" /m
我对几个 Win2k8 服务器尝试了相同的命令,但无济于事。这已经奏效,但现在正在产生上述错误。我通常在一个批处理文件中针对几个服务器的列表运行它以推出 Java。 (除非我们在远程安装时手动创建条目,否则不会设置 java 的路径。)
我尝试更新的服务器上现有的path 是这样的:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%systemroot%\System32\WindowsPowerShell\v1.0\;C:\BMC\Patrol3\bin;C:\BMC\common\globalc\bin\Windows-x86;C:\BMC\common\globalc\bin\Windows-x86-64;C:\BMC\Patrol3\BEST1\9.5.00\bgs\bin
我确实清理了几个重复的路径条目。除此之外,我没有发现任何不寻常的地方。
编辑: 调整命令以删除一些引号确实允许它运行,但是它会导入本地系统的路径替换远程系统路径并附加所需的路径条目。
修改后的命令:
setx /s servername PATH "%Path%;c:\program files (x86)\java\jre7\bin;c:\program files (x86)\java\jre7\bin\client" /m
为了解决这个新问题,我正在尝试使用 psexec 运行该命令。这样做让我回到了最初的问题,“默认选项不允许超过 '2' 次”。根据我在使用 psexec 时修改引号的方式,我可以获得“To many Arguments”或命令成功,路径被截断,最终再次成为远程服务器上应用的本地路径。
我最有希望的尝试:
psexec \\servername -u domain\user -p p@ssw0rd "c:\windows\system32\setx" "Path "%Path%;c:\program files (x86)\java\jre7\bin;c:\program files (x86)\java\jre7\bin\client" /M"
在 psexec 上使用“-s”选项会产生同样的错误,只是细节较少。
【问题讨论】:
-
引号对我来说很奇怪;尝试删除它们并将 entire 值包含在
""... -
当我在脚本中运行时,这些引用运行良好。更改引号可以消除错误。现在,本地路径正被应用到远程服务器,并带有我想要附加的路径。
-
@gritts 我建议在Why are other folder paths also added to system PATH with SetX and not only the specified folder path? 和setting path environment variable in batch file only once on Win7 上查看答案。在远程机器上正确扩展系统PATH当然比在本地机器上更困难。
标签: windows batch-file path psexec setx