robocopyを使ったバッチファイルが動かなくて対策した件
2024年12月07日
今回は、バッチファイルでrobocopyコマンドがエラーになって対策したのでその話。
経緯
コマンドプロンプトでファイル一覧を取得して、エクセルで表示するツールを作って運用してる。ファイル一覧を取得して解析する記事
ただ、NASが複数あって取得したファイル一覧(Dirファイル)が複数に分散してかき集めるのが面倒になってきた。
自分使うときにはローカルにDirファイルをコピーして、ローカルでエクセルを実行するので、他の人が使う場合もその方が使い勝手が良い。
Dirファイルの更新は、常時起動しているPCで毎週実行しているので、
ローカルにDirファイルをダウンロードしてからエクセルで解析するだけ。
それなら、検索したいNASをローラーするバッチファイルを作って、ローカルにコピーしてくれればよい。
これを配布しよう。
別のバッチから呼ぶとrobocopyのところで止まる
DLする処理をrobocopyでやっていたんだけど、robocopyを使ったバッチファイルを別のバッチファイルから呼び出したらコマンドが認識されず。
copilotに相談したらフルパスでコマンドを指定せよとのこと。
C:\Windows\System32\robocopy "source" "destination" /MIR
Windowsのコマンドは、パスを通したフォルダ内に該当のコマンド名のファイルがあるかが鍵。別のバッチを呼び出すとパスの条件がかわっちゃうのかなぁ。。。
早速やってみたら無事動いた。過去にもこれでハマったような覚えがある。Copilot さまさまな展開。
まとめ
今回はバッチファイルからrobocopyを使ったバッチファイルを呼び出すとエラーが出るので、robocopyコマンドはフルパスで指定しようというお話でした。PR
Comment