là nó có thể để trả lại errorlevel cũng nếu tôi ống đầu ra của một kịch bản vào một logfile:của Windows batch file: ống phá hủy mã trở lại của tôi
test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
test2.bat:
exit /B 1
Output test1.bat khi gọi:
ERRORLEVEL: 0
Các errorlevel luôn là 0.
Vấn đề là, tôi muốn gọi một kịch bản bên trong kịch bản của tôi, nơi sản lượng nên được chuyển hướng đồng bộ với sản lượng hiện trong dòng lệnh, do đó một cách đơn giản > là không đủ cho tôi. Tôi đã thử nhiều ý tưởng, nhưng kết quả là các đường ống luôn luôn có vẻ để tiêu diệt các lỗi cấp cho ... :(
Bạn có thể cho tôi bất kỳ lời đề nghị hơn nữa?
Cảm ơn trước ... :)
Cám ơn câu trả lời của bạn ... Thật không may điều này không làm việc cũng ... :(Hãy xem những gì tôi đã cố gắng:
test1.bat:
echo off
set VAR1=" "
echo VAR1 before test2: %VAR1%
call test2.bat 2>&1 | tee log.txt
echo VAR1 after test2: %VAR1%
test2:
@echo off
set VAR1=ERROR
echo VAR1 in test2: %VAR1%
exit /B 1
Output khi gọi test1.bat:
VAR1 before test2: " "
VAR1 in test2: ERROR
VAR1 after test2: " "
Là một giải pháp khác mà tôi đã cố gắng để tiết kiệm "ERRORVALUE: 1" vào logfile trong trường hợp có lỗi. Trong mainscript tôi muốn phân tích bản ghi tìm kiếm chuỗi này. Thật không may lưu find-kết quả đến một biến môi trường không làm việc là tốt, tôi đã như sau:
FOR /F "tokens=1 delims=" %%A in ('type %logDir%\03_applySqls.log | find /c "ERRORVALUE: 1"') do SET val=%%A
Lỗi tôi nhận được:
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Vậy làm thế nào tôi có thể ít nhất là phân tích logfile của tôi và trong trường hợp chuỗi được tìm thấy trong nhật ký tôi có thể trả về giá trị dưới dạng lỗi không?
rất liên quan: http://stackoverflow.com/questions/11170753/windows-command-interpreter-how-to-obtain-exit-code-of-first -pip-lệnh – eckes