是否可以在 Windows 10 上分配值来设置(不是 setx)值 %path%?

JJJ*_*ohn 5 windows batch command-line

这是我的批处理文件中的命令 setpath.bat

set workdir="%cd%"

timeout 30

set path="C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;"

timeout 30
Run Code Online (Sandbox Code Playgroud)

每次我在 Windows 10 上的 cmd.exe 中运行此批处理时,都会收到此错误

E:\>setpath.bat

E:\>set workdir="E:\"

E:\>timeout 30

Waiting for 29 seconds, press a key to continue ...

E:\>set path="C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;"

E:\>timeout 30
'timeout' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我知道set修改当前 shell(窗口)的环境值,并且更改立即可用,但它是暂时的;whilesetx永久修改该值,这会影响所有未来的 shell,但不会修改已经运行的 shell 的环境。

我只想知道我是否可以在 Windows 10 上为环境值 %path% 赋值,以便我可以立即在 shell 中运行一些命令。

这是使用这些命令的另一个实验

echo %path%

set workdir="%cd%"

timeout 30

set path="C:\Windows\system32;"

echo %path%

timeout 30

C:\Windows\system32\timeout 30
Run Code Online (Sandbox Code Playgroud)

这个输出

E:\>setpath.bat

E:\>echo E:\Miniconda3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\Miniconda3;E:\Miniconda3\Scripts;E:\Miniconda3\Library\bin;C:\Users\AlbertD\AppData\Local\Microsoft\WindowsApps;e:\Program Files\JetBrains\PyCharm Community Edition 2020.3\bin
E:\Miniconda3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\Miniconda3;E:\Miniconda3\Scripts;E:\Miniconda3\Library\bin;C:\Users\AlbertD\AppData\Local\Microsoft\WindowsApps;e:\Program Files\JetBrains\PyCharm Community Edition 2020.3\bin

E:\>set workdir="E:\"

E:\>timeout 30

Waiting for 30 seconds, press a key to continue ...

E:\>set path="C:\Windows\system32;"

E:\>echo "C:\Windows\system32;"
"C:\Windows\system32;"

E:\>timeout 30
'timeout' is not recognized as an internal or external command,
operable program or batch file.

E:\>C:\Windows\system32\timeout 30

Waiting for 29 seconds, press a key to continue ...

E:\>
Run Code Online (Sandbox Code Playgroud)

这意味着即使 %path% 变量只有一个值,当前 shell 也找不到 timeout.exe,但通过完整路径调用它效果很好。

我做了很多其他的实验,包括set path="%workdir%;%path%",它们都不起作用。

LPC*_*hip 5

您的路径中有“”。不应添加它们。

尝试

set path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;
Run Code Online (Sandbox Code Playgroud)

另外,为什么不像这样改变路径?

set path=C:\mydir;%path% 
Run Code Online (Sandbox Code Playgroud)

这可确保您的路径保留所有原始路径设置,并且只添加您想要添加的任何内容...