高圧縮で安定した動作の 7zipは手動の圧縮のほかに、コマンドでも圧縮することができます。
日々のルーチンワークで決まった形式・保存先であればbat化することで人の手から離れ完全に自動化することもできます。
7zipコマンド化
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
CD %~dp0
REM 概要:圧縮元フォルダにあるYYYYMMDDフォルダを7zipでYYYYMMDD形式で圧縮し移動する処理
REM 引数1:YYYYMMDD形式の日付。(日付が確定している場合はこの辺り変えてください)
REM 引数2:圧縮元フォルダ \で終わる。(フォルダが確定している場合はこの辺り変えてください)
REM 引数3:圧縮先フォルダ \で終わる。(フォルダが確定している場合はこの辺り変えてください)
REM 引数1が無ければ本日日付を入れる
IF "%1" == "" (
SET WORKDAY=%DATE:/=%
) ELSE (
REM 引数から作業日付を設定
SET WORKDAY=%1
)
SET strZipBefDir=%2
SET strZipAftDir=%3
REM 引数2が無ければ入力を求める
IF "%2" == "" (
SET /P strZipBefDir="圧縮元フォルダ名を入力してください。(例:%USERPROFILE%\Documents\):"
)
REM 引数3が無ければ入力を求める
IF "%3" == "" (
SET /P strZipAftDir="圧縮先フォルダ名を入力してください。(例:%USERPROFILE%\Desktop\):"
)
ECHO.
ECHO.
ECHO 圧縮元フォルダ:%strZipBefDir%
ECHO.
ECHO 圧縮先フォルダ:%strZipAftDir%
ECHO.
ECHO.
ECHO 処理を続ける場合はEnterキーを押してください
ECHO.
ECHO.
PAUSE
ECHO.
ECHO.
ECHO 作業日付の現在値 %WORKDAY%
ECHO.
ECHO.
SET /P RESULT="作業日を変更しますか?(y=変更する/any=変更しない):"
:WORKDAYCHANGE
IF %RESULT% == y (
CLS
ECHO.
ECHO.
ECHO 作業日付の現在値 %WORKDAY%
ECHO.
ECHO.
SET /P WORKDAY="作業日をyyyymmdd形式で入力してください:"
ECHO.
ECHO.
ECHO !WORKDAY!を設定しました。
ECHO.
ECHO.
SET /P RESULT="この設定で良ければ [ 1 ] を入力してください:"
IF %RESULT% == y GOTO WORKDAYCHANGE
)
CLS
ECHO.
ECHO.
ECHO 作業日 [ %WORKDAY% ] で処理を続行します。
ECHO.
ECHO.
ECHO 処理を中断する場合は×ボタンで閉じてください
ECHO.
ECHO.
PAUSE
REM zip元ファイルフルパスの確認。無ければ終了
DIR %strZipBefDir%%WORKDAY% > nul
IF %ERRORLEVEL% EQU 1 (
ECHO.
ECHO.
ECHO 【警告】圧縮するフォルダがありません。処理を終了します【警告】
ECHO.
ECHO.
PAUSE
EXPLORER %strZipBefDir%
EXIT
)
REM 圧縮移動先のパスの確認。無ければ終了
DIR %strZipAftDir% > nul
IF %ERRORLEVEL% EQU 1 (
ECHO.
ECHO.
ECHO 【警告】圧縮移動先のフォルダがありません。処理を終了します【警告】
ECHO.
ECHO.
PAUSE
EXPLORER %strZipAftDir%
EXIT
)
REM 圧縮移動先にzipがあるか確認。あれば終了。レアケース
DIR %strZipAftDir%%WORKDAY%\%WORKDAY%.zip > nul
IF %ERRORLEVEL% EQU 0 (
ECHO.
ECHO.
ECHO 【警告】圧縮移動先にzipがあります。手動でzipに追加してください。処理を終了します【警告】
ECHO.
ECHO.
PAUSE
EXPLORER %strZipBefDir%
PING -n 3 LOCALHOST > nul
EXPLORER %strZipAftDir%%WORKDAY%\
EXIT
)
REM 7zip.exeで圧縮し移動する(圧縮後元ファイルを削除)
"C:\Program Files\7-Zip\7z.exe" a -sdel %strZipAftDir%%WORKDAY%\%WORKDAY%.zip %strZipBefDir%%WORKDAY%
REM 圧縮移動先にzipが作成されたか確認。あれば何もしない。無ければフォルダを開いて確認する
DIR %strZipAftDir%%WORKDAY%\%WORKDAY%.zip > nul
IF %ERRORLEVEL% EQU 1 (
ECHO.
ECHO.
ECHO 【警告】zip作成に失敗したかもしれません。処理を終了します【警告】
ECHO.
ECHO.
PAUSE
EXPLORER %strZipBefDir%
PING -n 3 LOCALHOST > nul
EXPLORER %strZipAftDir%%WORKDAY%\
EXIT
)
ECHO.
ECHO.
ECHO [info] zip化処理成功!お疲れ様でした [info]
ECHO.
ECHO.
PAUSE
著作権について
著作権は当サイトの管理者に帰属します。
商用利用以外であれば著作権フリーですが、念のためコメントにてお知らせください。
