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 に答える