はじめに
投稿者はプライベート用事により大量のPDFファイルを使用することがあります。
これらを一定の決まったファイル名にすることがあるのですが、いちいち「右クリック→名前の変更」や「F2キー」を対応するとかなり面倒なことになります。
例:時間がかかる、ミスタイプの発生
例:一定でないファイル名
というわけで、今回はドラッグドロップによるファイル名の記名を行っていきたいと思います。
前置き
・PDFファイルの名前変更を取り扱います。
※PDFファイル以外でも使用できると考えております(未検証)。
本題
その1 固定の名前に変更
例:○○.pdfを「hogehoge.pdf」に変更
@echo off
ren %1 hogehoge.pdf
使用方法
・適当なバッチファイルに保存する
・保存したバッチファイルに、名前変更したいPDFファイルをドラッグドロップ
解説
@echo off
詳細
@echo off
:起動したcmd.exeに表示させなくする
ややうっとうしいので固定で入れました。お好みで。
参考:https://qiita.com/Sanada-code/items/5d21d885b732e6fb0d03
ren
詳細
ren
:リネーム(名前変更)のコマンド。rename
でも同様。それぞれ大文字でも同様。
参考:https://www.javadrive.jp/command/file/index3.html
%1
詳細
%1
:引数1つ目 ドラッグドロップした場合はファイル名(パス付き)が入ってます。
参考:https://www.javadrive.jp/command/bat/index6.html
その2 後連番つきの名前に変更
例:○○.pdf、△△.pdfを「hogehoge_1.pdf」「hogehoge_2.pdf」に変更
@echo off
setlocal enabledelayedexpansion
set num=1
for %%f in (%*) do (
ren %%f hogehoge_!num!%%~xf
set /a num=num+1
)
endlocal
使用方法
・適当なバッチファイルに保存する
・保存したバッチファイルに、名前変更したいPDFファイルををすべて選択してドラッグドロップ
※基本的に「並べ替え→本バッチを起動」の順で起動することを推奨。また、ドラッグドロップの際は選択したファイルのうち一番上をドラッグすることを推奨します。それ以外の動作を行った場合、連番の挙動は保証できません。
解説
setlocal enabledelayedexpansion
、endlocal
詳細
setlocal enabledelayedexpansion
、endlocal
:遅延環境変数
魔境です。各自ぐぐっていただいた方が早いと思います。
ちなみに今回は連番用の変数num
を遅延環境変数として扱っております。
参考:https://qiita.com/tana_tomo_1025/items/7f824a154f004f610386
for
詳細
for
:繰り返し
魔境です。各自ぐぐっていただいた方が早いと思います。
ちなみに今回の文章だとループ変数が%f
となっております。
参考:https://qiita.com/plcherrim/items/67be34bab1fdf3fb87f9
%*
詳細
%*
:引数*つ目 for文の中に入れてあるこの書き方の場合、「引数をすべて処理する」という意味になります。
%%~xf
詳細
%%~xf
:変数%f
からファイル名の拡張子を抽出
ここのサイトがわかりやすいです。
参考:https://rainbow-engine.com/batch-get-filepath-filename/
set /a
詳細
set /a
:変数への代入
ここを見てください。
参考:https://qiita.com/plcherrim/items/9cba5a42273e10915c8f
要するに「どこにあろうが○○.pdfその他を一括でhogehoge_*.pdfに変更する」というバッチができました。
正直遅延環境変数にする必要なさそうなのですが(※未検証)、まあこれで思った通り動くから良いか…
あとがき
投稿者はこれを300ファイルくらい作って活用しております。
不明点・誤字・誤り等ございましたらコメントください。お待ちしております。
今後の予定
・バッチファイルによる名前変更について ダブルクリック編