bar*_*lop 2 windows windows-7 cmd.exe
什么会导致 EXE 扩展在命令行中是强制性的,如何在当前 shell 中解析它?
我有一条很长的路。> 2048 个字符,我安装了一个添加到该路径的程序 nodejs。然后事情变得有点棘手。我遇到了一个问题,当他们的路径 > 2048 个字符时,有些人似乎在某个时候遇到了问题。我的大部分路径都被删除了。(我的路径仍然有一些旧的 cmd shell,所以这不是一个大问题,所以我将旧路径保存在一个文件中)并且在注册表中获得了 Windir 环境变量(我认为设置为空)。而且我什至无法打开环境变量窗口(这是人们在路径大于 2048 个字符并且丢失了 Windir 变量时会出现的症状)。所以我使用 setx 来创建windir=c:\windows并打开环境变量窗口并将我的 PATH 固定为它原来的样子。现在我打开的 cmd 提示窗口很好。
但是在我修复它之前,我仍然有一些较旧的 cmd 提示窗口,并且我知道其中的路径缩短了,并且我知道没有设置 windir 变量,但是我仍然看到其中的奇怪结果,我无法解释。而且我希望能够从这些 cmd 窗口中进行修复。
似乎我需要将 EXE 放在可执行文件之后才能运行它。
C:\crp>path
PATH=C:\Ruby21\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;C:\Program Files (x86)\Nmap;C:\Program Files (x86)\smartmontools\bin;C:\ProgramData\chocolatey\bin;C:\Users\user\AppData
\Roaming\npm
C:\crp>cd \windows\system32
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
......
C:\Windows\System32>set path=
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
.....
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>
Run Code Online (Sandbox Code Playgroud)
和
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>set windir=c:\windows
C:\Windows\System32>echo %windir%
c:\windows
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
Run Code Online (Sandbox Code Playgroud)
有趣的是,我认为解决未来 cmd 提示的方法是永久设置windir,即使用setx(然后(转到环境变量窗口并修复路径)。
我可以在一个被破坏的 cmd 会话中修复路径,我什至可以在那个 cmd 会话中修复windir,我知道这两者都不应该有帮助,但这使得将 EXE 放在文件名的末尾是强制性的。所以我没有看到原因.. 或者如何为特定的 cmd 会话修复它。
新的 cmd 窗口很好.. 但为了了解发生了什么,我希望能够从破坏的 cmd 会话中修复它。如果没有,那么我想知道为什么不能在其中修复它。
添加
与 Dmitry 的帖子相关
C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW
Run Code Online (Sandbox Code Playgroud)
确实,我看到 .EXE 没有列出,有点奇怪的是 %PATHEXT% 列在那里。似乎几乎是无限递归的(如果 DOS 甚至在那里处理递归/递归,它就不会)!
小智 5
你检查PATHEXT环境变量了吗?它列出了被认为是可执行的扩展。我的是这样的:
PATHEXT=.COM;.EXE;.BAT;.CMD;.LNK;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.AU3
Run Code Online (Sandbox Code Playgroud)
顺便说一句,有很好的环境编辑器:Rapid Environment Editor
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |