【问题标题】:Double semi-colon in batch file批处理文件中的双分号
【发布时间】:2013-06-06 18:24:15
【问题描述】:

第 2 行的设计目的是什么?

PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%FTPCABin%;%FTPAutoSysBin%;
PATH=%PATH:;;=;%

第 2 行执行前后,PATH 相同。

【问题讨论】:

    标签: cmd path


    【解决方案1】:

    如果未定义 FTPCABin,那么您的 PATH 将在定义中包含一个空路径(连续路径分隔符 ;;)。

    path1;path2;path3;;path5
    

    我认为没有必要,但第二行只是将连续的;; 替换为单个;。如果;; 不存在,则没有变化。

    【讨论】:

    • PATH 变量中有双分号会有问题吗?我编写了一个 BAT 脚本来自动化一些软件安装,我注意到一些对 setx 的调用插入了“;;”。
    • @user208145 - 我从未见过 PATH 中有空路径 (;;) 的问题。我会尽量避免它们,但我认为它们不会造成任何伤害。
    • 从 Windows Vista 开始,您可以通过定义环境变量 NoDefaultCurrentDirectoryInExePath 从 CMD 和 CreateProcess 中的隐式搜索路径中删除当前目录。请注意CreateProcess 将其可执行搜索路径(包括应用程序和系统目录)传递给SearchPath,其中“;;”在工作目录中显式搜索。因此,删除这些条目总是一个好主意。您可以通过包含“。”明确地添加工作目录而不会产生歧义。在PATH的某个地方。
    • @eryksun - 关于该环境的非常酷的信息。变量:-) 我以前从未见过类似的东西。我使用 Win 10 控制台进行了测试,它确实有效!但是,PATH 中的;; 未被解释为当前目录。但是.当然会被当作当前目录。
    • 这只是CreateProcess 中搜索的问题,它依赖于SearchPath 和自定义可执行搜索路径。 CMD 实现自己的搜索,忽略空的“;;”条目。
    猜你喜欢
    • 2021-11-28
    • 2012-11-23
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2013-05-14
    • 2011-04-20
    相关资源
    最近更新 更多