用于移动压缩和删除文件的批处理脚本

时间:2013-03-06 20:46:08

标签: winrar

我有一个批处理脚本执行以下操作

@ECHO OFF

REM move files older than 2 days from the incoming directory to the incoming archive directory
robocopy D:\Agentrics\integration\download D:\Agentrics\integration\download\archive /MOV /MINAGE:2

REM Zip files in the Archieve directory that are older than one week
FOR %%A IN (D:\Agentrics\integration\download\archive\*.txt*, D:\Agentrics\integration\download\archive\*.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r -to7d D:\Agentrics\integration\download\archive\"%%~nA.zip" "%%A"

REM Delete Original files after they are zipped
forfiles /p D:\Agentrics\integration\download\archive /s /m *.txt* /d -7 /c "cmd /c del /q @path"
forfiles /p D:\Agentrics\integration\download\archive /s /m *.cpi* /d -7 /c "cmd /c del /q @path"

REM Delete files that are older than 6 months from the archive directory
forfiles /p D:\Agentrics\integration\download\archive /s /m *.zip* /d -180 /c "cmd /c del /q @path"
pause

问题1: 当我运行脚本时,我得到一些文件的WinRAR诊断消息。例如,如果传入目录中的文件不超过两天,我会收到此消息。“WinRAR诊断消息:无文件添加”。由于此消息,脚本将停止,直到我单击对话框的关闭按钮。我使用的是WinRAR的免费版本及其未过期的

问题2:我在上面的脚本中有两个seprate命令。一个用于压缩超过一周的文件,另一个是在压缩后删除原始文件。如何链接这两个命令,以便如果某些原因文件没有压缩,他们也不应该被删除。或者是否有一个命令来打破脚本,如果文件没有压缩?我只想首先对文件进行zipp,然后删除原始文件

1 个答案:

答案 0 :(得分:0)

我很难使用

@ECHO OFF

REM Move files older than 2 days from the incoming directory to the incoming archive directory.
robocopy D:\Agentrics\integration\download D:\Agentrics\integration\download\archive /MOV /MINAGE:2

REM Move each file in the archive directory that is older than one week into a ZIP archive.
FOR %%A IN (D:\Agentrics\integration\download\archive\*.txt*, D:\Agentrics\integration\download\archive\*.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" m -afzip -ep -inul -to7d -y "D:\Agentrics\integration\download\archive\%%~nA.zip" "%%A"

REM Delete files that are older than 6 months from the archive directory.
forfiles /p D:\Agentrics\integration\download\archive /s /m *.zip* /d -180 /c "cmd /c del /q @path"

使用命令m可以简化整个过程,这意味着移动到存档而不是命令a,这意味着添加到存档 WinRAR 仅在成功压缩后才会删除文件。

使用开关-afzip明确地通知 WinRAR 使用ZIP而不是RAR压缩。

交换机-ep导致从存档内的文件名中删除路径。

可以使用开关-inul抑制任何错误或警告消息的输出。此开关主要用于控制台版本Rar.exe(不支持ZIP压缩)以输出到stdout和stderr,但也可用于 WinRAR 。我没有看到在使用WinRAR.exe版本4.20的测试时确认的诊断消息,因为该文件不超过7天而未创建ZIP文件。我已经看到使用Rar.exe创建RAR存档而不使用-inul的警告,但即使不使用切换-y也不需要按键击中。

我删除了交换机-r以进行递归存档,因为此处不需要将1个文件移动到ZIP存档。

未经修改的开关-to7d仅导致存档超过7天的文件。

最后添加了切换-y以对所有查询假设,尽管我在测试中从未见过。

还有一个暗示:
在NTFS分区上,可以在文件夹上设置属性压缩,从而对在此文件夹中复制或创建的所有文件进行自动ZIP压缩,以节省磁盘存储空间。

相关问题