Tôi đang cố gắng ghi nhật ký đầu ra của net stop
trong khi cũng chụp ERRORLEVEL
.ERRORLEVEL trong FOR/F Command Loop Trả về kết quả bất ngờ
Dựa trên this question, tôi đã cố gắng sau từ bên trong một chương trình con lồng nhau:
set /a loopIndex=0
for /F "usebackq delims=" %%i in (`net stop %SERVICE_NAME%`) do (
if !loopIndex! EQU 0 if !errorlevel! EQU 1 set statementError=1
set /a loopIndex+=1
call :logMessage "%%i"
)
echo statementError: %statementError%
Tuy nhiên, điều này không làm việc, ném 1
ngay cả khi net stop
thành công.
Điều này có thể xảy ra nếu không có tệp tạm thời không? Nếu không, giải pháp tệp tạm thời sẽ như thế nào?
ERRORLEVEL không phải là biến môi trường. Nó không cần phải được bao quanh với% hoặc! 'IF ErrorLevel 1' hoạt động tốt. –
Đọc lại bài đăng được liên kết. * Ngoài trạng thái bên trong này, ** bạn có thể, nếu bạn muốn, tạo một biến môi trường có tên ERRORLEVEL **, giống như cách bạn có thể tạo một biến môi trường có tên FRED. Nhưng, như với FRED, biến đó sẽ không có bất kỳ ảnh hưởng nào đến mức lỗi. * (** Vùng nhấn mạnh **). –
@KenWhite 'ERRORLEVEL' * là * biến môi trường tự động, giống như' CD', 'DATE' hoặc' RANDOM'. – dxiv