バッチ処理をしようとすると普段気にならないことでも意外な壁にあたったりするものですね。
今回私が直面した問題は得意先からの受注データをダウンロードした際にzipファイルで保存されるというものでした。
手作業であればダブルクリックで展開すればいいわけですが、今回はダウンロードから基幹システムに取り込むまでを完全に自動化したいのです。
コマンドプロンプトでなんとかならないか、ちょっと調べてみました。
コマンドプロンプトではzipファイルを展開出来ません
さて、いきなり結論ですが、コマンドプロンプトではどうやっても出来ないようです。
あっさりと出来ると思っていただけに残念ですが、これで諦めるのも悔しいのでもう少し調べてみました。
Linuxならもう少し簡単に出来そうなものですが、会社のパソコンはWindows。
その環境でなんとかするしかありません。
Powershellでなんとかなります
調べてみてPowershellを使うとzipファイル展開処理が出来るということがわかりました。
【具体的な記述はこちらを参照ください】
重いので普段あまり使わないのですがこれなら工夫次第で何とかなりそうです。
コマンドプロンプトで「powershell」と叩くとコマンドプロンプト画面上でpowershellを操作できるので結果的にコマンドプロンプトからzipファイルを展開することが可能です。
あとはこれをbatファイルで保存すれば無事完了です。
意外とややこしかった…
やり方さえわかれば後は簡単です。
例えば以下のような感じです。
powershell -Command Expand-Archive -Path C:\Users\hogehoge\データ.zip -DestinationPath C:\Users\hogehoge\
●環境に応じて調整してくださいね。
余談です
昨今はRPA等グラフィカル的にわかりやすい自動化ツールも出てきていますが、黒背景に緑文字をコツコツ入力して自動化ツールを作る方がどうも向いているようです。
マイクロソフトのpower automate desktopとかもたまに使うのですが、VBAやコマンドプロンプトの方が自分には合っているようです。
まあ好き嫌いせずにメリットをうまく組み合わせるのが一番いいのでしょうね。
またRPAツールも少しずつ触っていこうと思います。