フォルダーを圧縮するバッチ ジョブ (.bat) を作成するにはどうすればよいですか?

フォルダーを圧縮するバッチ ジョブ (.bat) を作成するにはどうすればよいですか?

7zip からコマンド ライン ツール 7za.exe をダウンロードし、次のスクリプトを実行しました。

echo off

cls

set zip ="C:\7za.exe"

set filename="%date%.backup.zip"

set pathtobackup="C:\MyDocs"

%zip% -t7z %filename% %pathtobackup%\*.doc

私の意図は、MyDocs フォルダー (サブフォルダーを含む) 内のすべての doc ファイルをバックアップし、日付付きの zip ファイルに入れることです。その後、このファイルを robocopy を使用してサーバーに移動しますが、現時点ではファイルを zip 圧縮する際に問題が発生しています。

誰か手がかりを持っていますか? とにかく、ファイルにパスワードを追加することもできますか?

答え1

構文を使用する

7z a -tzip archive.zip -r src\*.cpp src\*.h

あなたの場合は

7z a -t7z %filename% -r %pathtobackup%\*.doc

ソース:http://sevenzip.sourceforge.jp/chm/cmdline/switches/recurse.htm

答え2

7z をインストールすると、7 日以上経過したファイルを削除するスクリプトを含むこの実用的な例を使用できます。このスクリプトは、指定された「入力」フォルダーから「出力」フォルダーにファイルを圧縮します。フォルダーを圧縮するには、/d を追加する必要があります。フォルダー内のすべてのファイルを圧縮するには、最後の「%%X」を変更するだけです。

REM This is a batch script to zip files in folder or add /d to zip folders.
REM This script is using 7z to zip files, installation is required - "[http://www.7-zip.org/a/7z938-x64.msi][1]"
REM Remember to point 'do' to 7z installed path 7z.exe

SET input1=D:\Backup\SampleFolder
SET input2=D:\Backup\SampleFolder2

SET output1=C:\ZipBackups\SampleFolder
SET output2=C:\ZipBackups\SampleFolder2

CD /d %input1%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output1%\%%X.zip" "%%X"
FORFILES /P "%input1%" /M *.* /D -8 /C "cmd /c del @file"

CD /d %input2%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output2%\%%X.zip" "%%X"
FORFILES /P "%input2%" /M *.* /D -8 /C "cmd /c del @file"

答え3

これに対する簡単な解決策を見つけました。フォルダー内に複数のサブフォルダーを圧縮するとします。その場合、1. 7zip ソフトウェアをダウンロードしてインストールします。次に、サブフォルダーを圧縮する特定のフォルダーに 7z.exe をコピーします。

メモ帳に以下をコピーして貼り付け、.bat ファイルとして保存します。

cd "your_Folder_path" for /d %%f in (*) do (7z a -t7z %%f.7z "your_Folder_path\%%f")

ダブルクリックするとファイルが実行されます。

元のフォルダを削除する場合は、閉じ括弧の前にこれを追加します:

rd /s /q "your_Folder_path\%%f"

答え4

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%day%_%month%_%year%___%hour%_%min%_%secs%

echo datetimef=%datetimef%


path %path%;"C:\Program Files\7-Zip"

関連情報