web-dev-qa-db-ja.com

フォルダ内のすべてのファイルを別のファイルで圧縮(Zip)するWinRarコマンド

特定のフォルダ内の各ファイルとともにアーカイブしたいテキストファイルがあります。

たとえば、フォルダにはFile1File2File3、およびTextDoc1があります。

File1.ZipFile1TextDoc1を含む)、File2.ZipFile2TextDoc1を含む)、およびFile3.ZipFile3TextDoc1を含む)を作成したい。

それぞれを個別に作成する代わりに、これらのアーカイブを作成するために(.batとして)実行できるバッチコマンドはありますか?私はリストファイルを使用してきましたが、ファイル名を含む各.txtファイルを作成する必要があります。

これは私が使用しているものです:

"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File1.Zip" @"File1.txt"
"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File2.Zip" @"File2.txt"

等.

ZipまたはRarで問題ありません。

2
Luke

@echo off for %%f in (*) do (       if not %%f==TextDoc1 (            (作成するコマンド _%%~nf.Zip_含む _%%f_および _TextDoc1_ _      ) )_

for %%f in (*)は、現在のディレクトリ内の各ファイルを意味します— DO Zipファイルを作成するコマンド(詳細は関係ありません)— TextDoc1ファイル自体を検討している場合を除きます。それをスキップしないと、TextDoc1のコピーが2つ(WinRARの動作によっては1つだけ)含まれるTextDoc1.Zipファイルが作成されます。

トリッキーなことの1つは、_%%~nf_のファイル名部分である_%%f_です(拡張子は削除されています)。これを使用したのは、ファイル名の例としてFile1、File2、File3を指定しましたが、File4.txt、résumé.doc、flower.jpgなどもあると思います。 File4ではなくFile4.Zip、résumé.Zip、flower.Zipと呼ばれるZipファイル。txt.Zip、履歴書.doc.Zip、および花.jpg.Zip。もちろん、schedule.mppとschedule.xlsがある場合は、問題が発生する可能性があることを意味します。

1
Scott

試すことができるバッチは次のとおりです。

@echo off

rem Set highest number
set /a highcount=3

rem Initialize counter to 1
set /a counter=1

:loop
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.Zip" "File%counter%"
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.Zip" "TextDoc1"

rem Increment the counter by 1
set /a counter+=1

rem If the counter is less than or equal to "highcount", then loop and do the next file.
if %counter% LEQ %highcount% goto loop

これにより、File1.Zip、File2.Zip、File3.Zipという名前の3つのZipファイルが作成され、それぞれに一致する「File#」ファイルと(同じ)「TextDoc1」が含まれます。

0