2

Я очевидно пошел и испортил мою систему странным способом. В cmd строке Windows 7 больше не распознаются исполняемые или пакетные файлы, если я не ввел их явно.

C:\Users\Current> xcopy /?
'xcopy' is not recognized as an internal or external command,
operable program or batch file.

Это исправлено с помощью расширения .exe :

C:\Users\Current> xcopy.exe /?
< ... all of the help for xcopy shows below, as expected ... >

Я предположил, что сделал что-то, чтобы сломать мой путь, когда xcopy перестал работать, но возвращение его к минимальному набору вещей, который обычно включает Windows, не исправило это. Мой путь в настоящее время выглядит следующим образом:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\KC\Scripts

Единственная нестандартная вещь - это C:\KC\Scripts , которая указана в моем пути пользователя. Я не верю, что строка повреждена каким-либо образом. Это произошло недавно после установки Ruby через Windows RubyInstaller и выбора для него автоматического обновления моего пути. С тех пор я удалил что-нибудь из пути, кроме того, что я написал выше, но ошибка не исчезла.

Кто-нибудь знает причину, по которой Windows прекратит распознавать программы и командные файлы в CLI, не указав явно, что они являются файлами .exe или .bat?

2 ответа2

1

Возможные причины ошибки оболочки Windows cmd

'foo' is not recognized as an internal or external command,
operable program or batch file

Две переменные окружения тесно связаны с выполнением команды оболочки: PATH и PATHEXT .

  • Переменная среды PATH определяет путь поиска Windows, т. Е. Список каталогов, в которых производится поиск, когда командная оболочка пытается найти исполняемый файл.
  • Переменная среды PATHEXT определяет список расширений файлов, проверяемых Windows при поиске исполняемого файла.

И любое расширение файла может считаться исполняемым: если расширение файла связано с приложением, оболочка выполняет соответствующее приложение. Здесь ассоциировано означает то же, что определено как действие оболочки по умолчанию в реестре Windows для определенного расширения файла.

Вот хорошее введение во все темы: Командная оболочка Windows NT

0

Я испытал это с помощью командного файла, который я использую для копирования клиентского приложения Access на локальные компьютеры пользователя. Их среда представляет собой сочетание Windows 7 & 8 и 32-64 битных машин.

Я заметил, что файл xcopy.exe находился как в папках System32, так и в папках SysWOW64, и подумал, не возник ли конфликт.

Я скопировал xcopy.exe в папку, в которой находится пакетный файл, и теперь он, кажется, работает.

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