~シンプラインブログ~エンジニアブログファイルを一括リネームするバッチファイルを作る2019.12.07背景サーバーのログファイルを取得して特定のフォルダに保管するという作業があったのですが、複数の同名ログファイルがあるので取得したら一括でリネームしたい。作業端末がWindows10なので簡易的なバッチファイルを書いてみることにしました。〇〇〇〇_server2.logのように末尾にサーバ名を付加する。元のログファイル名の長さはどのファイルも同じ長さです。リネームしたいファイルとバッチファイル以外のファイルはフォルダに置かないようにします。:EOF付加するサーバ名を選べるようにして、フォルダにある.logファイルを一括でリネームする、という簡単な内容です。バッチファイルを作るのが初めてだったので、微妙にハマったところがいくつか。ハマったところIFの書き方IF文を書いたけどなぜか動かない。ネットで解説記事を読んでみても間違ってなさそう。間には半角スペースが必要と判明。最初に書いたプログラムではスペースがなかったため、ちゃんと動いてませんでした。IFやELSEの当該箇所でもスペースを入れ忘れるとIF文全体が機能しなくなるので注意。pause処理が完了したら「リネーム完了」と画面に表示するようにしたかったのですが、最初に書いたプログラムでは画面に表示されませんでした。コマンドプロンプトから起動すると表示されるのになんでだろう???調べてみるとpauseが入っていないのが原因でした。pauseを入れる理由は、バッチファイルを直接ダブルクリックで実行する場合、処理が完了するとすぐ画面が閉じてしまうため、echoでメッセージが表示されない。そのためpauseを入れることでメッセージを表示するところでいったん処理をとめる、ということが必要らしい。timeoutでも処理を指定の秒数分遅らせることができるとのこと。?????について個人的にはあんまりイケてないなあと思うところですが、今回リネームする対象のファイルはファイル名が一定であることからこのような処理としました。?は文字を表しており、?????は半角5文字ということになります。audit.logが対象だとすると、.logの前が半角5文字なので処理対象となります。文字数が異なるファイルがあると正しくリネームされないです。できたはいいけど作業端末だとセキュリティの関係でバッチファイルが動かなかった。