使用7zip压缩某些目录的批处理文件?

时间:2012-08-15 21:18:33

标签: windows batch-file 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 个答案:

答案 0 :(得分:2)

你关心语言吗?如果您想使用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 //是与指定模式匹配的正则表达式

答案 1 :(得分:1)

查看Windows“FORIF批处理文件命令。基本上,应该可以这样写:

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

未经测试:)