這裏是我的批處理文件來解析目錄編寫目錄中的文件,以及某些類型的壓縮文件檢查是否仍在使用Windows批處理腳本
REM Begin ------------------------
tasklist /FI "IMAGENAME eq 7za.exe" /FO CSV > search.log
FOR /F %%A IN (search.log) DO IF %%~zA EQU 0 GOTO end
for /f "delims=" %%A in ('dir C:\Temp\*.ps /b') do (
"C:\Program Files\7-Zip\cmdline\7za.exe" a -tzip -mx9 "C:\temp\Zip\%%A.zip" "C:\temp\%%A"
Move "C:\temp\%%A" "C:\Temp\Archive"
)
:end
del search.log
REM pause
exit
REM End ---------------------------
此代碼工作就好了我的需求90% 。它將作爲計劃任務進行部署。
但是,* .ps文件在實時情況下相當大(至少1GB)。所以代碼應該檢查傳入文件是否完全寫入,並且沒有被寫入它的應用程序鎖定。
我看到了另一個例子在其他地方,那建議使用以下方法
:TestFile
ren c:\file.txt c:\file.txt
if errorlevel 0 goto docopy
sleep 5
goto TestFile
:docopy
但是這個例子是很好的一個固定的文件。我怎麼可以在for循環中使用那麼多標籤和GoTo,而不會造成無限循環?或者這個代碼是否安全可用於For循環?
謝謝你的幫助。
上面的ren命令將ErrorLevel返回爲0,即使嘗試重命名失敗。我們如何真正確定重命名失敗? – FMFF 2010-04-07 13:57:37
我的測試顯示ErrorLevel設置爲1的失敗重命名,就像失敗的複製,移動等 而且robocopy選項仍然可以使用。 :) – ewall 2010-04-07 14:10:12