ファイル名をバッチファイルで一括変更する
2016年05月04日
熊本地震
こんにちは、ハニービーンです。
10年以上前になりますが、熊本に住んでいたことがあります。3年程住んでおりましたが、豊かな自然に美味しい食材、そして身近にある温泉がとても好きでした。
その間、地震はたまにあっても震度3程度で、大きな地震が起きる可能性が高いという話もありませんでしたので、そんな熊本で震度7が2回も記録されるほどの大地震が起ころうとは夢にも思いませんでした。
このたび、熊本での勤務経験があるということで、先週一杯まで熊本に業務応援に行って来ました。幸い自分の知人は皆様御無事で、よく行ったお店も大丈夫でした。
現地はまだ震度4程度の余震が度々あり、大きな揺れはもうないだろうと思いつつも、揺れ始めると「もしや」とドキッとします。
しかし、そんな中でも現地の方々はもちろん、現地入りしているたくさんの応援の人も加わり、懸命の復旧作業が進められています。結果として、空港、新幹線、高速道路が順次復旧しており、その迅速さは目を見張るものがあります。
しかし、一丸で取り組むインフラ復旧に比べ、個人の生活の回復は遅れている感があります。現地の方々にとってこれからが大変な時期であろうと、帰って来てから改めてそう感じました。
遅ればせながら、この度の熊本地震で被災された皆様に、心よりお見舞い申し上げます。一日も早く平常の生活が取り戻される事を祈っております。
ファイル名の一括変更
今回のお題はファイル名の一括変更です。
単純なルールに従って、ファイル名を変更したい場合、数が多いと手作業では時間がかかりますし、かなり苦痛な作業です。
このような単純作業は、コンピューターの得意分野でしょうから、自動で処理したいものです。
課題
実例として、以下の課題を取り上げたいと思います。
【課題】ファイル名の特定の空白を削除したい
フォルダ内に、pdfの資料が多数(数千)保存されている。ファイル名は20160503【プレゼン配布用】.pdfのように、日付【件名】.pdfとなっている。ところが担当者によっては【の前に半角スペースを入れている場合があり、半角スペースの有無が混在している。そこで、【の前の半角スペースを全て削除したい。なお、フォルダは年ごとに作成されているため、複数のフォルダに対して実行したい。
バッチファイルを使った処理
いろいろな手段があろうかと思いますが、ここではバッチファイルを使って処理したいと思います。バッチファイルの書き方にもいろいろありますが、実際に処理した時の例を示します。
バッチファイルの例
echo off
pushd %0\..
setlocal ENABLEDELAYEDEXPANSION
cls
for /F "usebackq tokens=*" %%1 in (`dir /A-D /s /b find "* 【*.pdf"`) do (
set a=%%~nx1
ren "%%1" "!a: 【=【!"
)
pause
exit
この内容で適当な名前を付けたbatファイルを作ります。pushd %0\..
setlocal ENABLEDELAYEDEXPANSION
cls
for /F "usebackq tokens=*" %%1 in (`dir /A-D /s /b find "* 【*.pdf"`) do (
set a=%%~nx1
ren "%%1" "!a: 【=【!"
)
pause
exit
内容の解説は省略しますが、実行するとバッチファイルの置いてあるフォルダとそのサブフォルダについて、【の前に半角スペースのあるpdfファイルを全て探し出して【の前の半角スペースを削除します。
バッチファイルなのでメモ帳で作成できますし、長文でないので手軽にできますね。
シェアしていただけると大変うれしいです。
更新情報はこちらからどうぞ