任何人都可以帮忙。 我正在尝试设置一个每天运行的计划任务,将7天以前的日志文件压缩到一个zip文件中,但日志文件的日期作为zip名称,而不是当前日期。
我迄今为止设法得到的最好的是使用文件名中的当前日期...我希望7天前的日期作为文件名。
我的脚本目前为:
SET SourceDir=D:\test\Logs
SET TmpDir=D:\test\Temp
SET DestinationDir=D:\test\Dest
ROBOCOPY "%SourceDir%" "%TmpDir%" *.log /MOV /MINAGE:7
FOR %%A IN (%TmpDir%\*.*) DO "C:\Program Files\7-Zip\7z.exe" a -tzip "%DestinationDir%\Logs-%date:~-4%-%date:~-7,2%-%date:~-10,2%.zip" "%%A"
RMDIR /S /Q "%TmpDir%"
任何人都可以帮助我,以便zip文件的日期不是文件创建日期但是7天前?
非常感谢
答案 0 :(得分:0)
修正了它。来自另一个网站的某个人给了我一个powershell命令来获取当前日期,然后休息几天。
powershell命令是:
for /f "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-7^)^; $date.ToString^('yyyy-MM-dd'^)`) do echo Logs-%%i.zip
它的(-7)位实际上决定了你想要回去多少天。我也被告知你可以使用这个命令通过使用与负面数字相关的正确数字来及时前进。
然后我不得不稍微调整它以将其输出作为变量以便添加到我的命令中。
我的最终剧本是:
SET SourceDir=D:\test\Logs
SET TmpDir=D:\test\Temp
SET DestinationDir=D:\test\Dest
for /f "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-7^)^; $date.ToString^('yyyy-MM-dd'^)`) do set LOGDATE=%%i
ROBOCOPY "%SourceDir%" "%TmpDir%" *.log /MOV /MINAGE:7
FOR %%A IN (%TmpDir%\*.*) DO "C:\Program Files\7-Zip\7z.exe" a -tzip "%DestinationDir%\Logs-%LOGDATE%.zip" "%%A"
RMDIR /S /Q "%TmpDir%"