代码之家  ›  专栏  ›  技术社区  ›  Adrian Nielsen

如何通过cmd[重复]从%PATH%变量中删除目录

  •  1
  • Adrian Nielsen  · 技术社区  · 7 年前

    通过命令行向变量和环境变量添加目录非常简单。这需要很多努力,但我能够从一个变量中删除一个子字符串,正如您在下面看到的(尽管它确实让人讨厌 % 出于某种原因签名)。无论如何,正如您在下面看到的 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
    

    到目前为止效果不错。

    现在是删除的技巧 \\测试\测试 正在使用 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).
    

    应该是一样的,不是吗?我不在乎如何解决这个问题,我只想能够从 %路径% 来自命令行。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Magoo    7 年前

    我会调查一下为什么那个终端 % 持续-我的机器上没有。

    您的问题似乎是,由于 path 包含空格,需要引用要指定的值。如果使用正确的语法 setx -the = 充其量是多余的。

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

    应该可以很好地工作,尽管我建议您为测试设置一个虚拟变量,以防万一 路径 是一个关键变量。