批处理文件移动/压缩/删除文件

批处理文件移动/压缩/删除文件

我正在尝试编写一个每天自动运行的批处理脚本来执行以下操作:

  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 周的文件?
  2. 压缩文件是否可以具有与原始文件相同的创建日期和时间?
REM zip 备份目录中的所有文件
对于 (*.TXT*, *.cpi*) 中的 %%A,请执行 "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
对于 (*.TXT, *.cpi) 中的 %%A,删除 "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

相关内容