我們在產品中有代碼,它檢查檔案屬性(check.bat file1.bin回傳 0 或 1 的結果)并在必要時重新啟動用戶行程(如果回傳 1,則重新啟動行程)。代碼作業正常,但我只是想問有沒有辦法用 FOR 回圈來改進它,因為我們每個回圈都做同樣的事情,但用戶名、任務名和檔案名 1
@echo off
:cycle1
FOR /F "tokens=* USEBACKQ" %%F IN (`check.bat file1.bin`) DO (SET var=%%F )
if %var% == 1 (taskkill /f /fi "USERNAME eq user1" & SCHTASKS /RUN /TN "task1")
goto cycle2
:cycle2
FOR /F "tokens=* USEBACKQ" %%F IN (`check.bat file2.bin`) DO (SET var=%%F )
if %var% == 1 (taskkill /f /fi "USERNAME eq user2" & SCHTASKS /RUN /TN "task2")
goto cycle3
:cycle3
FOR /F "tokens=* USEBACKQ" %%F IN (`check.bat file3.bin`) DO (SET var=%%F )
if %var% == 1 (taskkill /f /fi "USERNAME eq user3" & SCHTASKS /RUN /TN "task3")
goto eof
:eof
exit /b 0
uj5u.com熱心網友回復:
您可以使用for /l回圈來增加檔案編號。我還做了一些其他的小改動,使代碼更簡單,不需要那些代碼塊:
@echo off
for /l %%a in (1,1,3) do for /F "delims=" %%F IN ('check.bat "file%%a.bin"') do (
if %%F equ 1 taskkill /f /fi "USERNAME eq user%%a" & SCHTASKS /RUN /TN "task%%a"
)
但是,我確定您的用戶和任務沒有被呼叫user1,2,3,task,1,2,3因此您需要定義您的用戶和任務變數,并仍然使用數字增量根據bin檔案編號選擇每次使用:
@echo off & setlocal enabledelayedexpansion
set "u1=Steven"
set "u2=Maddy"
set "u3=Dan"
set "t1=taskname1"
set "t2=taskname2"
set "t3=taskname3"
for /l %%a in (1,1,3) do for /F "delims=" %%F IN ('check.bat "file%%a.bin"') do (
if %%F equ 1 taskkill /f /fi "USERNAME eq !u%%a!" & SCHTASKS /RUN /TN "!t%%a!"
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/385127.html
上一篇:如何顯示彼此相距1秒的影像
