※当サイトは、アフィリエイト広告を利用しPRを含みます。

技術系

7zipをコマンドで圧縮して元ファイルを削除する処理を完全自動化

高圧縮で安定した動作の 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


 

著作権について

著作権は当サイトの管理者に帰属します。

商用利用以外であれば著作権フリーですが、念のためコメントにてお知らせください。


社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
生き残りたいインフラエンジニアのカナデ

kanade

IT関連の仕事に従事し気付けば20余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-技術系
-,