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

mik*_*had 3 windows cmd mingw msys windows-8.1

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

SET PATH=C:\MinGW\msys\1.0\bin;%PATH%
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢!

bak*_*rcp 6

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

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

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

如果我跑,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
Run Code Online (Sandbox Code Playgroud)

如果我更改目录并运行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
Run Code Online (Sandbox Code Playgroud)

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

祝你好运@mikewesthad!

  • 现在好了.这是一个简单的解决方案.在这里,我指责Windows 8 ...而不是阅读我的默认cmd路径.谢谢! (2认同)