アーカイブ用のバッチスクリプト


1

WindowsコマンドラインとWinRAR(または他の同様のプログラム)を使用して、Windows 7でアーカイブタスクを設定する必要があります。これを行うスクリプトを作成したいのですが、経験がありません。

私ができるようにしたい:

  • 指定されたレベルまでフォルダの下部構造を再作成します

  • 最後のレベルの各サブフォルダーの内容を、そのサブフォルダーの名前を持つ1つのアーカイブにアーカイブする

  • アーカイブをパスワードで保護

  • アーカイブを指定されたサイズのチャンクに分割します

  • A(rchive)属性を持つファイルのみを含めることができます

  • Aアーカイブ後に(rchive)属性をクリアする

  • テキストファイルで指定することにより、特定のファイルとフォルダーを除外する可能性があります。

どんな助けも大歓迎です。

また、私は新しいことを学ぶ準備ができているので、このタスクを達成するのに役立ついくつかのチュートリアルを教えてくれることも非常にありがたいです。

編集:

次の例を考えてみましょう。呼び出されたフォルダーの内容をアーカイブし、DOCSその構造をレベル2まで再作成したいとします(「DOCS」はレベル0と見なされます)。第2レベルまでのサブフォルダーの構造は次のとおりであると想定します。

DOCS\L1-A\L2-A\

DOCS\L1-A\L2-B\

DOCS\L1-A\L2-C\

DOCS\L1-B\L2-A\

DOCS\L1-B\L2-B\

DOCS\L1-B\L2-C\

次の構造化されたバックアップ(別のパーティションまたはドライブ)を取得したい:

DOCS\L1-A\L2-A\L2-A.rar

DOCS\L1-A\L2-B\L2-B.rar

DOCS\L1-A\L2-C\L2-C.rar

DOCS\L1-B\L2-A\L2-A.rar

DOCS\L1-B\L2-B\L2-B.rar

DOCS\L1-B\L2-C\L2-C.rar


1
WinRARのコマンドラインオプションを見て、あなたに役立つかもしれないものを特定しましたか?また、できれば小さな例を使用して、2番目の要件を詳細に説明できますか?
カラン

@Karan:私はopを編集し、最小限の例を挙げました。WinRARコマンドラインオプションを見ましたが、前述のように構造化されたフォルダーを再作成することはできません(他のすべての側面はWinRAR内で実現できますが、フォルダー構造を自動的に移動する方法はわかりません)。
デジタルインク

うーん、かなり複雑なバッチスクリプトを使用して、やりたいこと(各第2レベルディレクトリの内容を個別にアーカイブする)が可能になる場合があります。ただし、バッチで行う必要がありますか?このようなIMOは、バッチベースのソリューションに頭を悩ませるよりも、PowerShellで実現する方がはるかに簡単かもしれません。
カラン

@Karan:あらゆる種類のソリューションを歓迎します。
デジタルインク

1
私はPSの専門家ではありませんが、タグを編集したため、PSタグを監視している人にこの質問が通知され、応答することを願っています。
カラン

回答:


2

これはステップ1と2で機能します。これにより、ミラー化されたフォルダーツリー構造内のレベル2フォルダーごとに「Level2Name.rar」という名前のrarファイルが作成されます。

rarファイル内にフォルダーツリー構造( "Docs / Lv1 / Lv2 / Files")を含める場合は、winrarコマンドから-epを削除するだけです。

setlocal
set savelocation=D:\Backups
set path=%path%;C:\Program Files\WinRAR
for /F "eol= usebackq delims=" %%A IN (`dir "DOCS" /A:D /B`) do call :FL1 "%%A"
goto :eof

:FL1
pushd DOCS\%1
set level1="%~nx1"
for /F "eol= usebackq delims=" %%A IN (`dir * /A:D /B`) do call :FL2 "%%A"
goto :eof

:FL2
set level2="%~nx1"
POPD
if not exist "%savelocation%\DOCS\%level1%\%level2%" mkdir "%savelocation%\DOCS\%level1%\%level2%"
winrar a -ibck -inul -ep "%savelocation%\DOCS\%level1%\%level2%\%level2%.rar" "DOCS\%level1%\%level2%"
goto :eof

endlocal 

+1これを自分でテストしていませんが、見栄えがいいです!
カラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.