在Windows 8.1上设置CMD的系统路径:尝试覆盖Windows / System32 / find.exe

时间:2014-08-12 03:02:17

标签: windows cmd mingw windows-8.1 msys

我正在尝试覆盖windows find命令,以便我可以调用find的另一个实现。另一个实现由MSYS提供,位于C:\ MinGW \ msys \ 1.0 \ bin中。在Windows 7上,我可以打开一个CMD,然后运行:

SET PATH=C:\MinGW\msys\1.0\bin;%PATH%

由于它在C:\ Windows \ System32 \ path之前为MSYS路径添加前缀,因此在Windows 7上的CMD中调用find时,将执行MSYS版本。

该命令不适用于Windows 8.1。当我在Windows 8.1上调用CMD中的find时,无论我做什么,它都默认为Windows实现。有没有办法在Windows 8.1上覆盖它?

我正在寻找一种只改变当前CMD实例的路径信息的解决方案。出于我的目的,我宁愿不必使用powershell(即使路径设置在powershell中按预期工作)。

谢谢!

1 个答案:

答案 0 :(得分:6)

运行cmd.exe时,请确保没有从C:\ Windows \ System32目录运行该命令(这是我自动打开的目录)。当您在具有匹配命令的目录(在本例中为MS'get.exe)时,本地副本将优先于您的PATH变量,即使您的MSYS find.exe首先列在路径中。

所以,为了让它为我工作,我运行cmd.exe,然后

C:\WINDOWS\system32>SET PATH=C:\msys64\usr\bin;C:\Program Files (x86)\CodeBlocks\MinGW\bin;%PATH%

如果我运行where find,我会

C:\WINDOWS\system32>where find
C:\Windows\System32\find.exe
C:\msys64\usr\bin\find.exe
C:\Program Files (x86)\Git\bin\find.exe

如果我更改目录并运行where find,我会得到:

C:\WINDOWS\system32>cd C:\
C:\>where find
C:\msys64\usr\bin\find.exe
C:\Windows\System32\find.exe
C:\Program Files (x86)\Git\bin\find.exe

我的路径略有不同,因为我正在尝试使用MSYS2,但同样适用于旧版本的MSYS。

祝你好运@mikewesthad!