【发布时间】:2015-12-30 04:19:22
【问题描述】:
在我的 .bat 文件中,我使用了代码:
setx /m path "%PATH%;%~dp0" %~dp0
将 .bat 文件的当前目录添加到系统路径。
但是在我进入系统设置并编辑路径变量之前,我无法使用 cmd 运行 phantomjs.exe(在同一目录中)。我实际上并没有进行任何更改,只需单击编辑然后确定以应用更改。
我需要在脚本中添加什么以允许我在无需进入系统设置的情况下运行 phantomjs.exe?
编辑:我使用的笔记本电脑是 32 位操作系统,未应用更改。我使用代码setx /m path %PATH%%~dp0 在 64 位操作系统上对其进行了测试,并且无需打开路径变量即可立即应用更改。
我怎样才能使它适用于 32 位操作系统?
【问题讨论】:
-
所以当您希望使用 phantomjs.exe 时,您必须手动运行一次脚本来更新 PATH?这与手动更新 PATH 有什么不同? (这只是一个有用的问题,除非脚本在系统启动时自动被踢出) ....谈到您的实际问题,当您运行脚本时,您的 CMD 是否打开?您是否以管理员身份运行脚本?
-
如前所述,您需要以管理员身份运行
setx /m才能工作。无论如何,环境更改不会在同一个cmd会话中生效。如果你想从同一个批处理文件中运行phantomjs.exe (in the same directory),那么只需写%~dp0phantomjs.exe。 -
@slashinsoulz 请阅读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 和Batch script for set env. variable startup OC4J and remove env. variable 上的答案。最后一个通过一个简单的分步示例解释了Windows的环境变量管理。
-
@Mofi 对于我的测试,我从批处理中删除了除了那行代码之外的所有内容,并且它有效。 phantomjs.exe 与批处理文件位于同一目录中。如果您阅读我的编辑,它会解释它适用于 64 位。
-
如果没有更多有问题的详细信息,例如所有目录路径和批处理文件的实际代码,我将无能为力。
setx /m path "%PATH%;%~dp0" %~dp0是错误的,因为第四个参数,如果 PATH 的字符串还没有以分号结尾,setx /m path %PATH%%~dp0也是错误的。并且用于更新系统 PATH 的方法根本不好,因为参考答案详细解释并提供了更好的批处理代码。
标签: shell batch-file phantomjs environment-variables