我想在Win7上設置批量備份腳本。它主要工作,但我有一行代碼執行多次。我已經做了一些搜索,我認爲它與批處理文件如何在「()」中處理代碼有關,但我不確定解決該問題的最佳方法。Windows批處理腳本 - for/D分隔執行多次
任何幫助將會很棒!
腳本:如果
for /D %%d in (C:\toBackupDir\*.*) do (
for %%f in (C:\zipDir\*) do (
for /f "tokens=1 delims=_" %%i in ("%%~nf") do (
if "%%i"=="%%~nd" (
if "%%~tf"=="%%~td" (
echo "%%~nf" is "%%~nd" No Backup necessary.
) else (
7z.exe a -tzip -stl -mx=1 "C:\zipDir\%%~nd_%DATE:~-4%.%DATE:~4,2%.%DATE:~7,2%.zip" "%%d"
)
)
)
)
)
線 「7z.exe」 多次執行 「%%我」 == 「%%〜ND」 是真實的。我的想法是,最後一個for循環來分割文件名被執行很多次,但一旦它得到%i並進行比較,我就完成了它。一旦「7z.exe」行執行後,我可以跳出循環嗎?我讀過在批處理文件中出現的問題很棘手。
讓我知道你是否需要細分代碼。
預先感謝您!
確定'如果 「%%〜TF」 == 「%%〜TD」('的 - 也就是說,FILETIME比較備份目錄的時間?由於您在'c:\ zipdir'中創建文件,每次調用'7z'實例時它的時間都會改變。對我來說可能已經太遲了 - 但我沒有記住你正在嘗試做什麼。評論(請記住代碼塊中的REM註釋,而不是'::'註釋)可能會有很多解釋 - 並且可能有助於將來的維護。 – Magoo
我們並不需要細分代碼,我們需要的是概述你試圖執行的任務以及與這些期望相關的事情。 – Compo
謝謝你的回覆。我知道通常我不能那樣做比較。我只發佈了我遇到麻煩的那部分腳本。我正在運行FolderTimeUpdate b4,在臨時文件上運行這部分腳本。 FolderTimeUpdate掃描每個目錄中的所有文件,並將父文件夾的時間戳更新爲子目錄中最舊文件的時間戳。7-Zip也使用-stl開關將其時間戳設置爲最早的文件夾。只要沒有空文件夾,並且我手動清理了Zip文件,它就會工作。腳本仍然需要工作......但這是我目前卡住的地方。 –