2016-03-08 10 views
6

Mam problem z wykonaniem innego polecenia w FOR polecenie w Windows 7 Ultimate. For-command jest częścią pliku wsadowego i powinno analizować dane wyjściowe innego polecenia.Windows Batch: Wykonywanie polecenia z FOR/F - "command not found"

Zwykle:

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

należy wykonać polecenie "Lista zgłoszeń" i wyjście jego wyników przez echo. Ale zawsze otrzymuję polecenie "nie znaleziono polecenia".

Próbowałem wykonać polecenie poza pętlą forloop i to działa. Próbowałem również wykonywać wiele zewnętrznych poleceń w obrębie for, ale każde polecenie powiedziało "command not found".

Próbowałem też przykłady tego posta:

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

I`m pewien

  • że polecenia istnieje
  • , że przeczytałem i wykonywania prawa do niego
  • , że mój użytkownik jest w grupie administratorów
  • , w której działam t komenda "Uruchom jako Administrator"

Ale nic nie działa na tym komputerze. Te same polecenia działają na innym komputerze, na którym działa także system operacyjny Windows 7 ultimate.

Czy ktoś może pomylić pomysł na komputerze, na którym nie znaleziono wszystkich poleceń?

Oto przykład moich wyjść konsoli, gdy próbuję go za pomocą polecenia "ls". ls.exe jest plikiem wykonywalnym z projektu gun4win i znajduje się w tym samym folderze, w którym działa mój plik wsadowy. Okna są w języku niemieckim, więc wynik błędu jest również w języku niemieckim.

C: \ test> 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: Problemem było tak źle wartość zmiennej systemowej envoirement "COMSPEC".

Zmieniłem ComSpec w "Erweiterte Systemeigenschaften-> Erweitert-> Umgebungsvariaben-> Systemvariablen" na "C: \ Windows \ system32 \ cmd.exe" i problem został rozwiązany.

Dzięki @foxidrive i @jeb

+3

Czy Twój SCRi pt użyć zmiennej o nazwie 'path'? – foxidrive

+2

... lub "pathext"? możesz spróbować wykonać skrypt w katalogu '% SystemRoot% \ System32 \', gdzie znajduje się polecenie 'tasklist' ... – aschipfl

+0

To nie ma znaczenia, gdzie znajduje się polecenie. Próbowałem nawet polecenia, które leży w tym samym folderze, co mój plik wsadowy. Mówi "nie znaleziono comand" na wszystko. Ale mogę wykonać wszystkie polecenia poza zakładem. Tylko w ciągu bez komandu znajduje się – Radon8472

Odpowiedz

4

Jeśli używasz FOR /F i pojawia się błąd 'something' is not recognized as an internal or external command, operable program or batch file dla każdego programu, nawet wewnętrzne polecenia, najczęstszą przyczyną jest źle zmienna COMSPEC.

Możesz sprawdzić zmienną za pomocą set ComSpec, powinna być C:\Windows\System32\cmd.exe.

Nie pomoże zmienić zmienną w linii poleceń, przyczyną jest opisany na DosTips: ComSpec strange behaviour

Jeśli zmienna zawiera inną wartość, należy skorygować pod

Dla systemu niemieckiego:
Erweiterte Systemeigenschaften->Erweitert->Umgebungsvariaben->Systemvariablen

Dla systemu angielskiego:
Win Key+Pause Key->Advanced System Settings->Environment Variables->System Variables

Powiązane problemy