如何在 Windows 中从可执行文件搜索中排除当前目录?

如何在 Windows 中从可执行文件搜索中排除当前目录?

在 Windows shell 中输入命令时,它首先在当前目录中查找程序,然后从 PATH 目录中查找。是否可以以某种方式(例如通过环境变量)将当前目录排除在搜索之外?类似于 SafeDllSearchMode,但针对的是可执行文件而不是 DLL?

换句话说 - 如果我当前目录中有一个 foo.exe,而 PATH 中的另一个目录中有第二个 foo.exe,那么如何在不指定其完整路径的情况下执行 PATH 目录中的那个?

答案1

我不知道有什么方法可以让 cmd 排除当前路径。不过,作为一种近似方法,您可以使用 mkdir 在当前目录中创建一个空目录,然后 cd 进入该目录,运行命令,然后 cd 备份并删除该目录:

SET _tempdir=%date%%time%
MKDIR %_tempdir%
CD %_tempdir%
REM run commands
...
CD ..
RM %_tempdir%

当然,空目录可以位于您有写权限的任何地方;但是,如果它不在同一目录中,则使用 pushd 进入该目录,然后使用 popd 返回,然后再将其删除可能会更容易。不过,使用您刚创建的空目录似乎比 cd 到随机目录更好——新目录仍将是路径上的第一个目录,因此最好使用您知道是空的目录。

相关内容