Các sự kiện hệ thống và / hoặc môi trường phổ biến như tiếp tục từ chế độ chờ hoặc mất kết nối mạng có thể gây ra sự cố cho một số ứng dụng được mong đợi luôn bật và kết nối. Vì vậy, nếu bạn có một ứng dụng nào đó bị treo hoặc chuyển sang chế độ “không phản hồi” thường xuyên và khởi động lại là cách khắc phục duy nhất cho nó, chúng tôi có một bản sửa lỗi đơn giản cho bạn dưới dạng một tập lệnh hàng loạt có thể tùy chỉnh để chỉ cần tắt ứng dụng và khởi động lại nó.
Ngoài tình huống rõ ràng ở trên, tập lệnh này có thể được sử dụng cho nhiều tác vụ hữu ích, chẳng hạn như:
- Dễ dàng khởi động lại ứng dụng bằng cách nhấp đúp hoặc sử dụng phím nóng.
- Chỉ khởi động lại chương trình khi chương trình bị treo hoặc không phản hồi.
- Chạy như một tác vụ đã lên lịch để đảm bảo ứng dụng luôn chạy.
- Bất kỳ nơi nào khác mà bạn muốn tự động khởi động lại có điều kiện ứng dụng.
Việc tùy chỉnh tập lệnh sẽ khá tự giải thích bởi các nhận xét, vì vậy chỉ cần định cấu hình tập lệnh phù hợp và bạn đã sẵn sàng.
Kịch bản
@ECHO TẮT
Khởi động lại ứng dụng ECHO
ECHO Viết bởi: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
SETLOCAL EnableExtensions
REM Nhập thông tin ứng dụng.
SET AppName = Tên ứng dụng
SET ExeFile = FileToLaunch.exe
SET ExePath = C: PathToApplication
REM Chọn các điều kiện để hủy ứng dụng.
REM Giá trị 1 = Có, 0 = Không
SET KillIfRunning = 1
ĐẶT KillIfNotResp Tương ứng = 1
ĐẶT KillIfUnknownStatus = 1
REM Chỉ định thời điểm khởi động ứng dụng:
REM 1 = Chỉ bắt đầu nếu quá trình đã bị hủy trước đó.
REM 0 = Bắt đầu ứng dụng bất kể.
SET StartOnlyIfKilled = 1
SET KillStatus = "% TEMP% KillStatus.tmp.txt"
SET Thành công = 0
ECHO Giết phiên bản% AppName% hiện có ...
IF {%KillIfRunning%} == {1} CALL: CheckKillStatus "% ExeFile%" "RUNNING"
IF {%KillIfNotResponding%} == {1} CALL: CheckKillStatus "% ExeFile%" "KHÔNG PHẢN HỒI"
IF {%KillIfUnknownStatus%} == {1} CALL: CheckKillStatus "% ExeFile%" "UNKNOWN"
ECHO.
NẾU {%StartOnlyIfKilled%} == {1} (
IF {%Success%} == {0} GOTO End
)
ECHO Khởi động lại% AppName% ...
START "% ExeFile%" "% ExePath %% ExeFile%"
ECHO.
NẾU TỒN TẠI% KillStatus% DEL / F / Q% KillStatus%
ENDLOCAL
: CheckKillStatus
ECHO Giết người với trạng thái:% ~ 2
TASKKILL / FI "STATUS eq% ~ 2" / IM "% ~ 1" / F>% KillStatus%
SET / P KillResult = <% KillStatus%
FOR / F "tokens = 1, * delims =:" %% A IN ("% KillResult%") DO (
ECHO %% A: %% B
IF / I {%%A} == {SUCCESS} SET / A Thành công =% Thành công% + 1
)
:Kết thúc
Phần kết luận
Mặc dù bạn có thể tìm thấy các ứng dụng thực hiện chức năng cơ bản giống nhau, nhưng việc sử dụng một tập lệnh đơn giản như vậy sẽ tránh được việc “một chương trình khác” đang chạy trong nền.