Tôi gặp sự cố khi thực thi một lệnh khác trong lệnh FOR trên Windows 7 Ultimate. Lệnh for là một phần của một tập tin batch và sẽ phân tích cú pháp các đầu ra của một lệnh khác.Windows Batch: Thực hiện lệnh với FOR/F - "lệnh không tìm thấy"
Thông thường đây:
for /f %%a IN ('tasklist') DO echo %%a
nên thực hiện lệnh "Tasklist" và đầu ra kết quả của nó qua tiếng vang. Nhưng tôi luôn nhận được "lệnh không tìm thấy".
Tôi đã cố gắng thực thi lệnh bên ngoài vòng forloop và nó hoạt động. Tôi cũng đã thử thực hiện rất nhiều lệnh bên ngoài bên trong, nhưng mọi lệnh đều cho biết "lệnh không tìm thấy".
Tôi cũng đã thử các ví dụ về bài đăng này:
Batch: Execute command with quotes in for loop with piping to find
I `m chắc chắn
- rằng các lệnh tồn tại
- rằng tôi đã đọc và thực hiện quyền đối với nó
- rằng Người dùng của tôi đang ở trong Nhóm quản trị
- mà tôi chạy t anh ta có lệnh "Chạy với tư cách quản trị viên"
Nhưng không có gì hoạt động trong máy tính này. Các lệnh tương tự hoạt động trên một PC khác cũng đang chạy một cửa sổ 7 cuối cùng.
Vì vậy, có ai có ý tưởng có thể sai trên máy tính nơi tất cả các lệnh không được tìm thấy?
Dưới đây là ví dụ về kết quả đầu ra bảng điều khiển của tôi khi tôi dùng thử với lệnh "ls". ls.exe là một tập tin thực thi từ dự án gun4win, và nó nằm trong cùng một thư mục nơi tập tin batch của tôi đang chạy. Các cửa sổ bằng tiếng Đức, vì vậy đầu ra lỗi cũng bằng tiếng Đức.
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.
EDIT CUỐI CÙNG: Vấn đề là giá trị như sai cho biến hệ thống envoirement "ComSpec".
Tôi đã thay đổi ComSpec trong "Erweiterte Systemeigenschaften-> Erweitert-> Umgebungsvariaben-> Systemvariablen" thành "C: \ Windows \ system32 \ cmd.exe" và sự cố đã được giải quyết.
Nhờ @foxidrive và @jeb
Liệu scri của bạn pt sử dụng một biến với tên 'path'? – foxidrive
... hoặc 'pathext'? bạn có thể thử thực thi kịch bản trong thư mục '% SystemRoot% \ System32 \', trong đó lệnh 'tasklist' nằm ở vị trí ... – aschipfl
Lệnh đó không nằm ở vị trí của lệnh. Tôi thậm chí đã thử một lệnh mà được đặt trong cùng một thư mục như batchfile của tôi. Nó nói "comand not found" cho mọi thứ. Nhưng tôi có thể thực hiện tất cả các lệnh bên ngoài của for. Chỉ trong phạm vi không có lệnh được tìm thấy – Radon8472