拡張子.ziや.zi_を.zipにするバッチファイルをつくってみた


まえがき(作成した理由)

以前、タイトルにあるようなツールをC#で作ったが、ウイルス誤検知1されるリスクを考慮し、バッチファイルで似たようなものを作ってみた。
※自分はバッチファイルについては素人なので、まずいところがあれば指摘いただけると助かります。

つかいかた

下記のバッチファイルZiRenamer.batを、拡張子.ziと.zi_に関連付けしておく。

機能

  • Microsoft Outlook のメールの添付ファイル.ziや.zi_を開くと、tempフォルダ以下にZiRenamerというフォルダを作成し、その中にzipファイルとしてコピーし、そのフォルダを開く。
  • それ以外の箇所で.ziや.zi_を開くと、.zipにリネームする。

注意事項

  • 上書きチェックは考慮していない。
  • tempフォルダは勝手にデータが消えていく可能性があるため、やりたいことに応じて、適宜バッチファイルを編集してカスタマイズしてください。
  • いろいろ未検証(空白を含むファイルパスに対する動作など)なので、ご利用は自己責任でお願いします。

バッチファイル

ZiRenamer.bat

echo off
set olPath=%LOCALAPPDATA%\Microsoft\Windows\INetCache\Content.Outlook\
set destOlPath=%TEMP%\ZiRenamer\
rem set destOlPath=%USERPROFILE%\Documents\ZiRenamer\
set zipExt=.zip
set tgtZipExt1=.zi
set tgtZipExt2=.zi_
set tmpPath=%~dp1
set tmpOlPath=%tmpPath:~0,-9%
set tmpExt=%~x1
set destFileName=%~nx1
set flag=0

rem .zi
if %tmpExt%==%tgtZipExt1% (
    set destFileName=%destFileName:~0,-3%%zipExt%
    set flag=1
)
rem .zi_
if %tmpExt%==%tgtZipExt2% (
    set destFileName=%destFileName:~0,-4%%zipExt%
    set flag=1
)

if %tmpOlPath%==%olPath% (
    rem outlook attachment
    if %flag%==1 (
        echo outlook attachment
        if not exist "%destOlPath%" (
            mkdir "%destOlPath%"
        )
        echo on
        copy "%~f1" "%destOlPath%%destFileName%"
        echo off
        start "" "%destOlPath%"
    )
) else (
    if %flag%==1 (
        move "%~f1" "%tmpPath%%destFileName%"
    )
)

rem 導入後は下記のpauseは削除推奨
pause

参考サイト


  1. 過去、自作ツールがウィルス対策ソフトに検疫(誤検知)されたことがある(ファイルの読み込みと描画くらいしかしていなかったのだが、、)。最近職場環境が変わり、ウイルス対策ソフトが違うものになったので、exeよりは誤検出されにくいであろうバッチファイルで同様のツールをつくることにした次第。。