【发布时间】:2013-06-06 18:24:15
【问题描述】:
第 2 行的设计目的是什么?
PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%FTPCABin%;%FTPAutoSysBin%;
PATH=%PATH:;;=;%
第 2 行执行前后,PATH 相同。
【问题讨论】:
第 2 行的设计目的是什么?
PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%FTPCABin%;%FTPAutoSysBin%;
PATH=%PATH:;;=;%
第 2 行执行前后,PATH 相同。
【问题讨论】:
如果未定义 FTPCABin,那么您的 PATH 将在定义中包含一个空路径(连续路径分隔符 ;;)。
path1;path2;path3;;path5
我认为没有必要,但第二行只是将连续的;; 替换为单个;。如果;; 不存在,则没有变化。
【讨论】:
;;) 的问题。我会尽量避免它们,但我认为它们不会造成任何伤害。
NoDefaultCurrentDirectoryInExePath 从 CMD 和 CreateProcess 中的隐式搜索路径中删除当前目录。请注意CreateProcess 将其可执行搜索路径(包括应用程序和系统目录)传递给SearchPath,其中“;;”在工作目录中显式搜索。因此,删除这些条目总是一个好主意。您可以通过包含“。”明确地添加工作目录而不会产生歧义。在PATH的某个地方。
;; 未被解释为当前目录。但是.当然会被当作当前目录。
CreateProcess 中搜索的问题,它依赖于SearchPath 和自定义可执行搜索路径。 CMD 实现自己的搜索,忽略空的“;;”条目。