更改 Windows 上可执行命令的顺序

xbe*_*nch 8 windows command-line path-variables

有时我需要更改仅共享名称的可执行命令的顺序。让我向您展示一个简单的例子:

\n\n
\xce\xbb where find\nC:\\Windows\\System32\\find.exe\nC:\\Program Files\\Git\\usr\\bin\\find.exe\nC:\\cygwin64\\bin\\find.exe\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下,将调用 Windows 的“find”命令,而不是其他两个命令(GNU findutils)。我的问题很简单:更改顺序或将其中一个设置为第一首选项的正确方法是什么?

\n

Mar*_*ged 5

转到 Windows 的环境变量定义并复制PATH. 创建一个名为的新变量BASEPATH,并将所有不属于find.exe可找到路径列表的条目放入其中。

现在创建一个名为 的文件fwin.cmd并将其放在 PATH 中的某个位置。该文件的内容将如下所示:

@echo off
SET PATH=C:\windows\system32;%BASEPATH%
ECHO Set path to search tools like find in Windows own folder
Run Code Online (Sandbox Code Playgroud)

创建两个文件fgit.cmdfcyg.cmd相应地更改 PATH。

有时额外安装的应用程序会改变您的PATH. 如果是这种情况,您将需要将新条目添加到BASEPATH.

根据需要find.exe,打开 Windows 命令行 shell 并调用相应的 cmd 文件。批处理设置的路径将是打开的 shell 的本地路径,一旦关闭它,设置就会消失。

您也可以直接解决所需的 find.exe,但这意味着更多的输入,并且可能不是您想要的:

dir C:\ /S | C:\Windows\System32\find.exe foo
Run Code Online (Sandbox Code Playgroud)

  • 目录可以在 `PATH` 中重复,因此只需在前面添加所需的目录,例如 `set "PATH=C:\Program Files\Git\usr\bin;%PATH%"`。 (2认同)