我使用此脚本将所有.txt和.cpi文件压缩到7zip的单独文件中的备份文件夹中。压缩文件后删除原始文件。但是这个脚本有一个逻辑缺陷。让我们说如果7zip程序无法运行,文件也会被删除。我如何更改脚本,以便它们不会删除文件,如果他们没有先压缩拉链。另外我如何更改此脚本以便它压缩超过7天的文件?谢谢你的帮助。 @echo关闭 setlocal
set _source=C:\test7zip\bak
set _dest=C:\test7zip\bak
set _wrpath=C:\Program Files\7-Zip
if NOT EXIST %_dest% md %_dest%
for %%I in (%_source%\*.txt,%_source%\*.cpi) do "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" & del "%%I"
暂停
答案 0 :(得分:0)
你现在看起来比我更多,但我可以帮助......
在7zip中你可以获得一个批处理文件,当解压缩时会改变系统变量...... 解压缩文件的批处理文件(您已经完成)可以在删除文件之前检查变量是否为真......或者其他什么。?
希望无论如何都有帮助吗?
对于文件的压缩女巫已经有一天了......你可以有一个具有7天计时器的批处理文件,并且在时间结束后它将文件的某个目录拉到7zip中?
这就是我可以帮助你的所有内容。
答案 1 :(得分:0)
我没有彻底检查或测试您的代码,但我立即注意到了这一点。 “&”在脚本的最后一行创建一个条件命令,它始终执行第二个命令,无论第一个命令是失败还是成功。将其更改为&&创建一个条件命令,其中第二个命令仅在成功完成第一个命令时执行,如下所示:
for %% I in(%_source%*。txt,%_ source%*。cpi)do“%_wrpath%\ 7z”a“%_dest%\ %% ~nI.7z”“%% I”& ;&安培; del“%% I”
要包含超过7天的文件,请在压缩文件之前使用以下更改将其移至临时目录:
set _source=C:\test7zip\bak
set _dest=C:\test7zip\bak
set _temp1=C:\test7zip\temp1
set _wrpath=C:\Program Files\7-Zip
if NOT EXIST %_dest% md %_dest%
forfiles /P %_source% /S /M *.txt /D -7 /C "cmd /c move @file %_temp1%"
forfiles /P %_source% /S /M *.cpi /D -7 /C "cmd /c move @file %_temp1%"
for %%I in (%_temp1%\*.txt,%_temp1%\*.cpi) do "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" && del "%%I"