おはようございます。今回はファイル名を一括変更するバッチファイルです。会社でツールがインストール出来ない環境のためファイル名を一括で消したり変換出来たりしないかと考えました。
今日紹介するコードは、ショートカットの文字を消すバッチファイルです。
ファイル名 一括変換 バッチ使い方
ファイル名を一括変換するバッチの使い方から見ていきましょう。こんな感じです。
ファイル名の一部分の名前を一括で削除したい場合に活用。
” – ショートカット”や”コピー”などの文字列を一括で変更が出来ます。
①下記のファイルで末尾に -ショートカット とされているファイルが複数あります。ここで「ファイル名一括変更rename.bat」バッチファイルをクリックしましょう。
②3秒くらいすると末尾にあった” – ショートカット”の文字が消えます。
こんな感じで使えるので、ファイル名の一部を一括で変更したい場合は役に立つかと思います。
ファイル名一括変換コード
早速ですが、バッチファイルのコードの中身です。コードをコピーしてメモ帳に貼付け > バッチファイルとして保存しましょう。ファイル名一括変換バッチファイルの作成完了です。
@echo off
rem ショートカットのつくファイル名を削除するバッチです。
rem 10行目のコードを変えて色んな文字の変換が出来ます。
rem ループで%%fをコールする
for %%f in ( * ) do call :sub “%%f”
exit /b
rem コール先のバッチ 「- ショートカット」と付くファイル名を””(空白)に置換
:sub
set fname=%1
set fname=%fname: – ショートカット=””%
ren %1 %fname%
pause
コード内の下線は「 – ショートカット」という文字を「””%」で空白にするという意味を持ちます。 なので「 – ショートカット=””%」部分を変更すると他の文字も変換できます。
例えば「– ショートカット =”リンク”%」にするとファイル名に「 – ショートカット」が付く部分を「リンク」に変換します。特殊記号を扱うバッチファイルの場合はこちらを参考にしてみてください。
ファイル名一括変更バッチファイルを作成して時間を短縮しましょう!それではー
マトレーさん、送付していただいたバッチ確認しました!
5行目のfor %%f in ( * ) do call :sub “%%f”
のダブルクウォーテーションが抜けておりました。ダブルクウォーテーションを付けてエラーが解消されましたので一度試してみてください。よろしくお願いいたします。
マトレーさんのメールにコメント送りましたので返信していただけると助かります。よろしくお願いいたします。
すみません、メールを送ろうかと思ったんですがなおさんのアドレスは何処かに記載されてますでしょうか?ちょっと見つける事が出来なかったので教えて頂けますでしょうか。
宜しくお願い致します。
追加
日本語ファイル名の置換をしたい場合
・メモ帳に張り付けた場合エンコードがUTF-8が標準となっている場合がある(メモ帳画面の右下に表示されている)
その場合はメモ帳内
「ファイル」→「名前を付けて保存」→文字コードの部分を「ANSI」に変えて保存し直す.
使用するときに気を付けるポイント(?)があったので共有しておきます.
・メモ帳にコピペした場合 ” 記号が全角になるので半角に直す.
5行目 for…の ”
空白置換部分の ”
・置換後の結果が空白行の場合は “”で良いが
別の文字にしたい場合は,ダブルクオーテションを抜いてそのまま記述.
また空白も認識し反映されるので注意.
ex)「– ショートカット」の文字を「テスト」に置換
set fname=%fname:– ショートカット=テスト%
お礼が遅くなり申し訳ありません!
御返答ありがとうございました!
しかし直してみた結果エラーは出なくなったのですが、
普通に叩くと「指定されたファイルが見つかりません。」となり
管理者として実行すると「コマンドの構文が誤っています」となります。
デスクトップに「新しいフォルダ」を作ってその中にbatファイルと適当なフォルダのショートカットを置いて試している状態です。
フォルダ名を半角名に変えてみたりしましたが変わらずでして、何か判りましたらご教授頂けますと幸いです。
メール等でその「バッチファイル」と「名前変更したいフォルダのキャプチャ」を送っていただくことは可能でしょうか?確認してみたいと思います。
もしよければ返事ください。マトレーさんのアドレスにメール送ります。
こんばんは。
この様なバッチが欲しくて探しておりました!
ですが自分の環境で試してみると上手く動きませんでした…。
そのままダブルクリック → 何も起こらず
管理者として実行 → 「コマンドの構文が誤っています」がバーッと沢山でて止まる
コードの中身は全く変えずにそのままなのですが…何が原因か判りますでしょうか。
御教授頂けますと助かります。
コメントありがとうございます。記事内のバッチコードをコピペしてみると“%%f”や””%のダブルクウォーテーションの部分が「“」の全角になっていることが解りました。
「“」の部分を半角のダブルクウォーテーションに変換してみていただけますでしょうか?
もし直らない場合はコメントください。よろしくお願いいたします。