如何在Windows批处理文件中使用setx命令

cod*_*e82 7 windows batch-file environment-variables setx

我正在尝试创建一个Windows批处理文件来自动设置环境变量以使用python 2.4或python 3.3.

python 2.4和3.3都安装在我的系统上.这是我的代码:

::To toggle between Python24 and Python 33
@echo on
if (%PYTHONHOME:~-2%) == "24" (setx PYTHONHOME "C:\Python33" && setx PATH %PATH:Python24=Python33% ) else (setx PYTHONHOME "C:\Python24" && setx PATH %PATH:Python33=Python24% )
pause
Run Code Online (Sandbox Code Playgroud)

首先,我将PYTHONHOME设置为 C:\Python24

但是上面的脚本给出了以下错误:

SUCCESS: Specified value was saved.
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.
Run Code Online (Sandbox Code Playgroud)

我的PYTHONHOME仍指向python 24,没有任何改变.setx命令不会更改环境变量.导致此错误的原因是什么?

Eri*_*ski 7

Windows命令行错误:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.
Run Code Online (Sandbox Code Playgroud)

摘要:

您正在使用setx命令并在仅允许一个令牌时为其分配多个令牌.

如何在Windows上重现此错误:

打开Windows cmd终端并输入这些命令.这会引发错误:

C:\Users\Charity>setx FANCYPANTS string with spaces

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.
Run Code Online (Sandbox Code Playgroud)

执行相同的命令,但引用您的字符串,如下所示:

C:\Users\Charity>setx FANCYPANTS "string with spaces quoted"
SUCCESS: Specified value was saved.
C:\Users\Charity>
Run Code Online (Sandbox Code Playgroud)

设置变量,在此重新启动cmd终端以加载更改.

C:\Users\Charity>echo %FANCYPANTS%
string with spaces quoted
Run Code Online (Sandbox Code Playgroud)

环境变量已保存.现在删除它.

C:\Users\Charity>setx FANCYPANTS ""
SUCCESS: Specified value was saved.
Run Code Online (Sandbox Code Playgroud)

在此处重新启动cmd终端以加载更改.再次打印内容.

C:\Users\Charity>echo %FANCYPANTS%
%FANCYPANTS%
Run Code Online (Sandbox Code Playgroud)

变量FANCYPANTS已删除且不再存在.