2つのWindowsバッチスクリプトがあり、どちらも配置されているフォルダーを再帰的に処理し、すべての.rarファイルをrarファイルのフォルダーに抽出します。
ただし、フォルダが構造を使用する場合:
file.part01.rar
file.part02.rar
file.part03.rar ect..
スクリプトは、これらの各ファイルを抽出しようとするとチョークし(.rar拡張子と一致するため)、FileExtract.blaが既に存在することをユーザーに提示します。上書きしますか? (はい・いいえ ? RARアーカイブパーツの数のX倍(多くの場合、20または30倍)。
私はバッチスクリプトで、拡張子がpart02.rarからpart99.rarのファイルを最初に除外する方法を理解しようとしています(ただし、これは抽出したいファイルであるため、not part01.rar) 「DO」/ unrarコマンドに渡される前。
どちらも同じように機能する(part02.rarファイルでは同じように失敗する)2つの異なるバッチファイルを次に示します。
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "sourcefolder=."
FOR /R "%sourcefolder%" %%a IN (*.r*) DO (
FOR /f "delims=" %%b IN ('echo %%~xa^|findstr /r "\.r.*"') DO
("C:\Program Files\7-Zip\7z.exe" x "%%~a")
)
および#2:
@echo on
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.Zip) DO (
"C:\Program Files\7-Zip\7z.exe" x "%%X"
)
popd
)
ありがとう
スクリプトは、これらの各ファイルを抽出しようとするとチョークし(.rar拡張子と一致するため)、FileExtract.blaが既に存在することをユーザーに提示します。上書きしますか? (はい・いいえ ? RARアーカイブパーツの数のX倍(多くの場合、20または30倍)。
"N"を7z
コマンドに単純にパイプして、"NO"の"N"オプションを選択するように指示しないのはなぜですか。それが提示された場合は?
これらのコマンドが常に最初に該当するfile.part01.rar
で始まり、次にfile.part02.rar
、file.part03.rar
などに順番に移動するのか、それとも本当に偶数であるのかはわかりません。コンテンツを賢く抽出した重複ファイルにとって重要です。
自動化が保留されている場合は、問題が存在するときにこのオプションのみを選択し、その"N"オプションを自動的に選択すると、他のファイルも抽出され、自動化が終了します。
したがって、問題は、part [02-99] .rarファイル名を持つこれらのRARファイルが、抽出されている場所にすでに存在するファイルを抽出するため、既存のファイルを上書きするかどうかを尋ねるということです。
1名前付きファイルを最初に抽出してから、抽出ファイルの上書きの競合がある後続の一致するすべてのファイル名を試行する場合、これは機能するはずです。
これが期待どおりに機能する場合は、バッチスクリプトロジックで必要な変更を最小限に抑えることができます(以下の例を参照)。
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "sourcefolder=."
FOR /R "%sourcefolder%" %%a IN (*.r*) DO (
FOR /f "delims=" %%b IN ('echo %%~xa^|findstr /r "\.r.*"') DO
(ECHO N | "C:\Program Files\7-Zip\7z.exe" x "%%~a")
)
@echo on
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.Zip) DO (
ECHO N | "C:\Program Files\7-Zip\7z.exe" x "%%X"
)
popd
)