Tôi gặp sự cố với tệp lô của mình. Nó xây dựng một số chương trình tự động bằng cách làm một cái gì đó như thế này:Thoát tập lệnh lô từ bên trong một hàm
- thiết lập một số cờ biên soạn
- chạy 'gmake tất cả'
- gọi là "kiểm tra mức độ lỗi" chức năng và nếu errorlevel 1, lối
Vì vậy, nó trông như thế này:
set FLAG=1
...
gmake all
call :interactive_check
set OTHERFLAG=1
...
gmake all
call :interactive_check
Có 6 hoặc 7 trong số này (và tôi t có thể phát triển). Vì vậy, tôi đã thực hiện một chức năng để kiểm tra errorlevel thay vì sao chép/dán nó ở mọi bước. Vấn đề là thế này: việc kiểm tra lỗi được thực hiện thông qua một chức năng:
:interactive_check
if errorlevel 1 (
echo.
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo Error in compilation process... exiting
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo.
cd %root_dir%
exit /B 1
) ELSE (
echo.Continuing to next step
)
goto:eof
Bây giờ, khi chạy nó, exit /B 1
chỉ đơn giản là ra khỏi chức năng, nhưng không phải là tập tin thực thi.
Bạn có biết cách thoát khỏi tệp hàng loạt hoàn chỉnh mà không phải sao chép/dán "if errorlevel 1 .." của mình vào mỗi bước không?
Bạn không thể. Chỉ cần thay thế 'call: interactive_check' bằng' if errorlevel 1 goto error'. Không có nhiều sự khác biệt giữa sao chép hoặc dán cũ hoặc sau này. :) – atzz
OK, giải quyết vấn đề với điều này và nó hoạt động tốt, cảm ơn! – Gui13