2016-03-08 1 views
6

У меня возникла проблема с выполнением другой команды в FOR-команде в Windows 7 Ultimate. Командная команда является частью пакетного файла и должна анализировать выходы другой команды.Пакет Windows: Выполнение команды с FOR/F - «команда не найдена»

Обычно это:

for /f %%a IN ('tasklist') DO echo %%a 

должен выполнить команду "Tasklist" и вывод его результатов через эхо. Но я всегда получаю команду «не найден».

Я попытался выполнить команду за пределами шлюза, и он работает. Я также попытался выполнить множество внешних команд внутри for, но каждая команда сказала «команда не найдена».

Я также попытался примеры этого поста:

Batch: Execute command with quotes in for loop with piping to find

Я уверен

  • , что команды существует
  • , что я прочитал и исполнять права на него
  • , что мой Пользователь находится в группе администратора
  • что я запускаю t он командует командой «Запуск от имени администратора»

Но на этом компьютере ничего не работает. Те же команды работают на другом ПК, который также запускает Windows 7 Ultimate.

Значит, кто-нибудь может ошибиться на компьютере, где все команды не найдены?

Вот пример моих консольных выходов, когда я пытаюсь выполнить команду «ls». ls.exe - это исполняемый файл из проекта gun4win, и его расположение находится в той же папке, где работает мой пакетный файл. Окна на немецком языке, поэтому выход ошибки также находится на немецком языке.

C: \ тест> test_for.bat

C:\test>rem --- test a command stand-alone --- 

C:\test>ls 
ls.exe  test_for.bat  

C:\test>rem --- test same command in a FOR-Loop --- 

C:\test>for /F "delims=" %a in ('ls') do echo FOR-OUTPUT: %a 
Der Befehl "ls" ist entweder falsch geschrieben oder konnte nicht gefunden 
werden. 

FINAL EDIT: Проблема заключалась в том, как неверное значение для переменной системы envoirement "COMSPEC".

Я изменил ComSpec в «Erweiterte Systemeigenschaften-> Erweitert-> Umgebungsvariaben-> Systemvariablen» на «C: \ Windows \ system32 \ cmd.exe», и проблема была решена.

Благодаря @foxidrive и @jeb

+3

ли ваш SCRI pt использует переменную с именем 'path'? – foxidrive

+2

... или 'pathext'? вы можете попробовать выполнить скрипт в каталоге '% SystemRoot% \ System32 \', где находится команда 'tasklist' ... – aschipfl

+0

Это не так, где находится команда. Я даже попробовал команду, которая лежит в той же папке, что и мой пакетный файл. Его слова «comand not found» для всего. Но я могу выполнить все команды outsite из for. Только в пределах команды no comand найдено – Radon8472

ответ

4

Если вы используете FOR /F и получить ошибку 'something' is not recognized as an internal or external command, operable program or batch file для каждой программы, даже внутренние команды, наиболее распространенной причиной является неправильная переменная COMSPEC.

Вы можете проверить переменную set ComSpec, она должна быть C:\Windows\System32\cmd.exe.

Это не поможет изменить переменную в командной строке, причина описана в DosTips: ComSpec strange behaviour

Если переменная содержит другое значение, вы должны исправить это под

Для немецкой системы:
Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen

Для английской системы:
Win Key+Pause Key->Advanced System Settings->Environment Variables->System Variables

Смежные вопросы