如何通过cmd从%PATH%变量中删除目录

时间:2018-05-11 23:45:04

标签: batch-file variables cmd environment-variables substring

通过命令行向变量和环境变量添加目录很容易。这需要花费很多精力,但是我能够从变量中删除一个子串,如下所示(尽管由于某种原因确实留下了令人讨厌的%符号)。无论如何,正如您在下面看到的那样,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}}的目录位置。

1 个答案:

答案 0 :(得分:0)

我调查终端%为何仍然存在 - 它不在我的机器上。

您的问题似乎是因为结果path包含空格,您需要引用要分配的值。如果你使用setx的正确语法也会有所帮助 - =最多是多余的。

call setx path "%%path:%cut%=%%"

应该会愉快地工作,尽管我建议您设置一个虚拟变量进行测试,以防path是一个关键变量。