2

Что может сделать расширение EXE обязательным в командной строке и как его можно разрешить в текущей оболочке?

У меня был длинный путь. > 2048 символов, и я установил программу, nodejs, которая добавила к этому пути. А потом все пошло немного не так. У меня была проблема, что некоторые люди, кажется, получают в какой-то момент, когда их путь> 2048 символов. Большая часть моего пути была удалена. (У меня все еще есть несколько старых командных оболочек cmd с моим путем, так что это не большая проблема, поэтому я сохранил свой старый путь в файле) И переменная среды 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>

а также

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]

Самое смешное, что я думаю, что для будущих приглашений cmd было решено постоянно устанавливать windir, то есть с помощью setx (затем (перешел в окно переменных environemnt и исправил путь).

Я мог бы исправить путь в сеансе cmd с ошибками, я даже могу исправить windir в этом сеансе cmd, я знаю, что ни то, ни другое не должно помочь, но это делает обязательным размещение EXE в конце имен файлов. Так что я не вижу причины .. или как это исправить для определенного сеанса cmd.

Новые окна CMD в порядке .. Но ради понимания того, что происходит, я хочу иметь возможность исправить это из-за неудачного сеанса cmd. А если нет, то я хотел бы знать, почему это не может быть исправлено в нем.

добавленной

Относится к посту Дмитрия

C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW

Действительно, я вижу.EXE не указан, и немного странно, что там указан буквальный% PATHEXT%. Кажется почти бесконечно рекурсивным (если бы DOS даже обрабатывал рекурсию / рекурсию там, чего не было бы)!

1 ответ1

5

Вы проверяли переменную окружения PATHEXT ? В нем перечислены расширения, считающиеся исполняемыми. Мой такой:

PATHEXT=.COM;.EXE;.BAT;.CMD;.LNK;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.AU3

Кстати, есть хороший редактор среды: Rapid Environment Editor

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .