0

我使用此脚本将所有 .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"

暂停

4

2 回答 2

0

你现在似乎比我更多,但我也许能帮上忙……

在 7zip 中,您可以使用一个批处理文件,在解压缩时会更改系统变量...解压缩文件的批处理文件(您已经完成)可以在删除文件之前检查变量是否为真...或其他东西.?

希望无论如何都有帮助?

对于文件的压缩,女巫已经有几天的历史了……你可以有一个批处理文件,它有一个 7 天的计时器,并且在时间到了之后,它将文件的某个目录压缩到 7zip 中?

我能帮你的就这些了。

于 2013-03-13T05:05:54.027 回答
0

我没有彻底检查或测试您的代码,但我确实立即注意到了这一点。脚本最后一行中的“&”创建了一个条件命令,它将始终执行第二个命令,无论第一个命令是失败还是成功。将其更改为 && 以创建一个条件命令,其中第二个命令仅在第一个成功完成后执行,如下所示:

对于 %%I in (%_source%*.txt,%_source%*.cpi) 执行 "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" && del "% %我”

要包含超过 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"
于 2013-03-23T08:38:03.960 回答