我尝试了以下实验。
在开始之前,我检查了cmd中的PATH变量,该变量具有以下值:
Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Lenovo\ReadyApps;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Calibre2\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;
最初,我认为cmd仅在PATH变量包含的目录中查找可执行文件,因此我随机选择了一个应用程序-winword.exe(Microsoft Word),并尝试从命令行启动它:
start winword
但是令我惊讶的是,该程序启动了!我感到惊讶的原因是因为我已经在PATH变量中的所有目录中搜索了名为“ winword”的exe文件,但所有搜索都为空!
因此,我得出结论,命令提示符必须在PATH变量中指定的位置之外的其他地方搜索以查找可执行文件。
显然,我要做的下一件事是寻找“ winword”可执行文件所在的确切位置。事实证明,winword.exe位于此处:
C:\Program Files\Microsoft Office 15\root\office15
因此,给我一个想法,就是当执行“开始”命令时,CMD可能会自动浏览ProgramFiles和ProgramFiles(x86)(及其所有子目录)吗?这导致我尝试启动计算机上安装的另一个应用程序Audacity,该exe文件位于:
C:\Program Files (x86)\Audacity
再次让我惊讶的是,当我键入以下内容时,Audacity无法启动:
start audacity
在命令行中。
然后,我将包含audacity.exe的目录添加到PATH:
set path=%path%;C:\Program Files (x86)\Audacity
之后,我再次尝试启动Audacity:
start audacity
好吧,毫不奇怪,Audacity推出了。
我想知道的是命令提示符在何处查找可执行文件?为什么即使在包含winword.exe的目录不属于PATH的情况下启动winword.exe,但对于audacity.exe来说却并非如此?
我也尝试了其他应用程序。当我使用启动命令时,Chrome和Firefox可以工作。
更新:我正在运行Windows版本6.3.9600(Windows 8.1)