業務で自動化したかったので作った(業務自体を潰したほうがいいのでは)
何がやりたいの?
もらったファイルをリネームして、PW付ZIP圧縮する。
作ったバッチ
※7ZIPのインストールなどをして、7z.exeを叩ける状態にする必要がある
使い方
別途下記のようなbatを用意して、D&Dで実行させる。
cd %~dp0 powershell -NoProfile -ExecutionPolicy Unrestricted .\process.ps1 %1 %2 %3 %4 %5 %6 %7 %8 %9 pause
こんな感じ↓
補足感想など
ファイル名の置換
バッチ(DOS)でやろうとしたが、ごり押しバッチしか出てこなかった。 replace() 的な関数使ってスマートにやりたいよね、ということでpowershellを採用した。
PW付圧縮ファイルについて
社内で使えるソフトのほうがいいよねという個人的理由で7zipを採用。
公式に
C:\Program Files\7-Zip\7z.exe" a -pPassWord data.zip data.xlsx
と書いているせいで -pPassWord がオプション指定用と勘違いした。よく考えたらすぐ分かるのだが。 (-p → オプション指定文字列 | PassWord → 任意のパスワード文字列)
7zipの実行
直接下記のように指定したら、$password が変数展開してくれず、 「$password 」という文字列がパスワードとして設定されてしまった。
&$sevenzip_path a .\$result_file_name .\$work_dir_name -p$password
スペースを挟まないと変数展開してくれない模様。とりあえず別変数を用意して対応した。
感想
powershell気持ち悪いし永遠に慣れる気がしない