【Windows】圧縮ファイルからメタファイルを削除するバッチコマンドを作った


概要

例によってテストエビデンスとかをzipでまとめた後に

「ああっ!Thumbs.dbが入りこんじゃった。削除しなきゃ…。」

みたいなのが面倒なので、7zipの機能を使ってフォルダ内のzipファイルから一括でメタファイルを削除するコマンドを作った。

機能

  • zip/7zファイル内に含まれている下記ファイルやディレクトリを削除する
    • Thumbs.db
    • .DS_Store
    • __MACOSX

使い方

  1. 7zを導入し、windowsパスを通す
  2. 下記掲載ソースコードをバッチファイルにしてwindowsパスを通す
  3. 下記コマンドを実施する
> cd /d 【zipファイルが大量に入っているフォルダ】
> clean-zip-files start

ソースコード

下記を clean-zip-files.bat として保存する。windowsパスを通しておくと便利だと思う。

clean-zip-files.bat
@echo off
setlocal enabledelayedexpansion

rem 引数チェック
if /i not "%1"=="start" (
    call :HELP_MSG
    exit /b 0
)

rem 前提コマンドチェック
where 7z > nul 2>&1
if not "%ERRORLEVEL%"=="0" (
    echo 7z コマンドが見つかりません。
    exit /b 1
)

for /f "usebackq delims=" %%a in (`dir /b ^| findstr /i /r /c:"\.zip$" /c:"\.7z$"`) do (
    set COMPRESSED_FILE=%%~a
    set CMD=7z d "!COMPRESSED_FILE!" "Thumbs.db" "__MACOSX" ".DS_Store" -r
    echo !CMD!
    !CMD! > nul
)
endlocal

exit /b 0

rem ------------------------------
rem ヘルプ用メッセージ
rem ------------------------------
:HELP_MSG
    echo.
    echo カレントディレクトリの圧縮ファイル(7z/zip)内から次のファイルやディレクトリを削除する
    echo     Thumbs.db
    echo     .DS_Store
    echo     .__MACOSX ^<DIR^>
    echo.
    echo usage^)
    echo     ^> clean-zip-files start
    echo.
exit /b

プロダクト紹介

今まで作ったバッチコマンドはGitHubで公開している。良かったらどうぞ。
https://github.com/mahny-b/alstroemeria

以上