0

只是请求批处理编程的帮助。需要对某些文件夹进行定期备份,并且想知道我将如何实现这一点。

目标:滚动目录并压缩具有特定名称的特定文件夹。

代码逻辑:

  //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 个字符。

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

编辑:代码,澄清。

4

2 回答 2

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// 是与指定模式匹配的正则表达式

于 2012-08-15T21:30:10.003 回答
1

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

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

未经测试:)

于 2012-08-15T21:29:58.890 回答