2012-08-15 204 views
0

仅需要批量编程帮助。需要定期备份某些文件夹,并想知道如何实现这一点。使用7zip压缩某些目录的批处理文件?

目标:滚动浏览目录并使用特定名称压缩某些文件夹。

代码逻辑:

//For all directories in folder 
    for /d %%X in (*) do (
    if (%%X != tag_******) 
     "7z.exe" a -ttar "%%X.tar" "%%X\" 
) 

for %%X in (*.tar) do 
    "7z.exe" a -tgzip "%%X.tgz" "%%X" 

如果可以批处理文件夹名称,我该如何区分文件夹名称?

例如:压缩tag_aaa111,跳过tag_aaa111_v2,跳过所有的文件夹没有前缀“tag_”

条件是该目录与tag_开始,之后还会有恰好6个字符。

一直试图弄清楚这一点。谢谢您的帮助。

编辑:代码,澄清。

回答

2

你关心的语言

for /D %%f in (*) do (
    set dirname=%%f 
    if "%dirname:~0,4%"=="tag_" (
     7z ... %dirname% ... 
    ) 
) 

未经测试的:)?如果您想使用PERL,您可以执行如下操作:

while(<*>){ 
    if(-d && m/^tag_/){ 
    system("7zip $_"); # Change to whatever compress command you need 
    } else { 
    #other condition for other files and non matching directories 
    } 
} 

系统将使用里面的任何参数进行系统调用。 -d将指定文件是否为目录,并且m //是与指定模式相匹配的正则表达式

+0

我能否让Windows调度程序自动运行perl脚本来每晚自动执行脚本?不是很熟悉perl – 2012-08-15 21:32:18

+0

只要你有perl安装。您应该能够安排任何类型的脚本或可执行文件运行。 [调度perl脚本](http://serverfault.com/questions/267013/scheduling-a-perl-script-with-output-redirection)有一个解释 – jcern 2012-08-15 21:37:30

+0

有趣。你知道perl是否有可以下载的cli可执行文件?即时尝试避免安装任何东西。 – 2012-08-15 21:44:26

1

看看Windows'FORIF批处理文件命令。基本上,它应该可以写的东西是这样的:

+0

哦完美。所以这个代码块会取代我的代码块之一。我假设if语句“7z ...%dirname%...”就是这样一行:“7z.exe a -ttar%dirname%.tar%dirname%”?以及名称中的dirname如何排列精确的10个字符? – 2012-08-15 21:38:19

相关问题