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%",它们都不起作用。
您的路径中有“”。不应添加它们。
尝试
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)
这可确保您的路径保留所有原始路径设置,并且只添加您想要添加的任何内容...
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |