批次檔移動/壓縮/刪除文件

批次檔移動/壓縮/刪除文件

我正在嘗試編寫一個每天自動運行的批次腳本來執行以下操作:

  1. 將超過 2 天的檔案從主目錄 (Jason) 移至存檔目錄。
  2. 壓縮存檔目錄中超過 1 週的文件,並刪除該目錄中超過 6 個月的文件。
  3. 我想從不同的目錄(而不是包含文件的目錄)運行此腳本。

我編寫了以下腳本,但它無法正常工作。

REM 將超過 2 天的檔案移至存檔目錄
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2

問題:

  1. 如何更改以下命令以壓縮超過 1 週的 zip 檔案?
  2. 壓縮檔案是否可以與原始檔案具有相同的建立日期和時間?
REM zip 備份目錄中的所有文件
FOR %%A IN (*.TXT*, *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
FOR %%A IN (*.TXT, *.cpi) DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A"

REM 刪除備份目錄中所有超過 6 個月的文件
forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"

答案1

如果我是你,我不會為此使用 for 迴圈。我更喜歡@harper提出的方式但是,這仍然是你想要的方式:

REM move files older than 2 days to an archive directory
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.txt /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.cpi /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
REM zip all files in the backup directory
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -7') do "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%a"
REM Delete all files in the backup directory that are older than 6 months
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -183') do del D:\Agentrics\integration\incoming\Jason\archive\%%a /y

相關內容