
[已解決]批處理BAT腳本if中包含標簽的問題最后由 lonron 于 -3-22 18:33
當 %Tmp%Testtest.lock 存在時,如果 XXX.exe 是未啟動狀態,且 %%a 大或等于 60,那么最終測試結果是:關閉了XXX.exe、刪除了%Tmp%Test、跳轉到 tag1 標簽。當 %Tmp%Testtest.lock 存在時,如果 XXX.exe 是已啟動狀態,且 %%a 大或等于 60,那么最終測試結果是:關閉了XXX.exe、刪除了%Tmp%Test、跳轉到 tag2 標簽。這是為什么?還有就是如果將 geq 換成 lss 然后將 兩個返回值調換下也就是:nclick="copycode($('code0'));">復制代碼
- if exist %Tmp%Testtest.lock (
- for /f delims= %%a in ('powershell (new-timespan (gc '%Tmp%Testtest.lock') (date -format 'yyyy.MM.dd HH:mm:ss')).totalseconds') do (
- if %%a geq 60 (
- :Cleaning
- tasklist | find XXX.exe >nul && (
- taskkill /im XXX.exe /t /f >nul
- goto Cleaning
- )
- rd /s /q %Tmp%Test
- ) else (
- goto tag2
- )
- )
- )
- :tag1
- cls
- echo.
- echo tag1 ...
- pause
- :tag2
- cls
- echo.
- echo tag2 ...
- pause
同樣是 %Tmp%Testtest.lock 存在時,無論 XXX.exe 是否啟動,只要 %%a 大或等于 60,結果都是 關閉了XXX.exe、刪除了%Tmp%Test、跳轉到 tag1 標簽。為什么會出現這種情況?沒有找到其中的原因,只感覺是不是和判斷中的標簽 Cleaning 有關?nclick="copycode($('code1'));">復制代碼
- if exist %Tmp%Testtest.lock (
- for /f delims= %%a in ('powershell (new-timespan (gc '%Tmp%Testtest.lock') (date -format 'yyyy.MM.dd HH:mm:ss')).totalseconds') do (
- if %%a lss 60 (
- goto tag2
- ) else (
- :Cleaning
- tasklist | find XXX.exe >nul && (
- taskkill /im XXX.exe /t /f >nul
- goto Cleaning
- )
- rd /s /q %Tmp%Test
- )
- )
- )
- :tag1
- cls
- echo.
- echo tag1 ...
- pause
- :tag2
- cls
- echo.
- echo tag2 ...
- pause

