通过命令行向变量和环境变量添加目录很容易。这需要花费很多精力,但是我能够从变量中删除一个子串,如下所示(尽管由于某种原因确实留下了令人讨厌的%
符号)。无论如何,正如您在下面看到的那样,set
使用的setx
无法与%PATH%
一起使用。有没有办法通过命令行从echo %path%
环境变量中删除目录/路径?
我做了测试,C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\WINDOWS\System32\LibreSSL\;C:\ProgramData\chocolatey\bin;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\addtopath;C:\Users\thisguy\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin;\\test\test
:
\\test\test
我想在这里做的是通过命令行删除最后的set cut=\\test\test
echo %cut%
\\test\test
。所以,
%path%
接下来,我将oldname
设置为set oldname=%path%
echo %oldname%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\WINDOWS\System32\LibreSSL\;C:\ProgramData\chocolatey\bin;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\addtopath;C:\Users\thisguy\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin;\\test\test
:
\\test\test
它有效,到目前为止一切顺利。
现在删除call
的技巧是使用call set newname=%%oldname:%cut%=%%
echo %newname%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\WINDOWS\System32\LibreSSL\;C:\ProgramData\chocolatey\bin;C:\Program Files\PuTTY\;C:\Program Files\Git\cmd;C:\addtopath;C:\Users\thisguy\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin;% **<--------(pesky percent sign lingers)**
进行一些基本的变量编辑。来吧,尝试一下其他方式,我花了很长时间才弄明白这一部分:
call setx path=%%path:%cut%=%%
天才!我现在非常高兴。所以,大部分都很好,对吧?好吧,看看这个:
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
我能得到什么?
%PATH%
它应该完全相同,不应该吗?我不在乎如何解决这个问题,我只是希望能够从命令行中删除{{1}}的目录位置。
答案 0 :(得分:0)
我调查终端%
为何仍然存在 - 它不在我的机器上。
您的问题似乎是因为结果path
包含空格,您需要引用要分配的值。如果你使用setx
的正确语法也会有所帮助 - =
最多是多余的。
call setx path "%%path:%cut%=%%"
应该会愉快地工作,尽管我建议您设置一个虚拟变量进行测试,以防path
是一个关键变量。