命令行批处理脚本

时间:2013-03-12 18:46:58

标签: zip

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

暂停

2 个答案:

答案 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"