コマンドプロンプトでファイル名一括変更

解決済みの質問

コマンドプロンプトでファイル名一括変更

コマンドプロンプトのrenコマンドでフォルダ内の同一拡張子のファイル名の拡張子を一括変更することはできますが、
(例 ren *.txt *.htm )
拡張子以外の共通部分を拡張子を含む形で一括変更することはできませんか?
たとえば拡張子のないd01という文字列で終わるファイル名を一括してd01の部分を消して拡張子を.jpgにしたいのです。

投稿日時 - 2006-09-30 21:55:53

QNo.2442428

困ってます

質問者が選んだベストアンサー

失礼しました。質問をきちんと読んでいませんでした。

例えば、d01で終わるということは、その前の文字の桁数は固定でしょうか? 例えば、0001d01、0002d02、d9212d01・・・といったように。

そうであれば、

ren ????d01 ????.jpg

でうまくいきませんか?

投稿日時 - 2006-09-30 23:01:32

お礼

Netscapeのキャッシュフォルダの画像ファイルを縮小表示で一覧するためでした。桁数は固定です。
パッチファイルの方法のほうは
for %%f in ( *%char% ) do (
の行でエラーがでるようでうまくいきませんでした。

投稿日時 - 2006-10-01 05:36:09

ANo.3

18人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(6件中 1~5件目)

ANo.7

補足です。

下の『★「d01」の前の文字数が同じでない場合』でバッチファイルを実行する場合、d01の前の文字数が同じ場合でももちろん機能します。
ファイルの末尾がd01のものは、d01を消しかつ拡張子jpgを付け足します。

投稿日時 - 2006-10-01 01:21:43

ANo.6

★「d01」の前の文字数が同じである場合

拡張子の無い「d01」で終わるファイル名、例えば、
「AAAAd01」「BBBBd01」・・・「ZZZZd01」
の場合、d01の前にある文字数が同じならば、?を1文字として以下のコマンドを実行します。

ren ????d01 ????.jpg

上の場合は、「AAAAd01」といったように「d01」の前の文字数が4つある場合です。「?」は任意の1文字を表します。
例えば、「d01」の前の文字数が5つある場合は、

ren ?????d01 ?????.jpg

となります。

★「d01」の前の文字数が同じでない場合

変換したいファイルが「C:\Photo」というディレクトリに
「AAAAd01」、「555sQ1d01」、「9dkkkdsd01」といった形であり、「d01」の前の文字数がそれぞれ違います。
そこで、「C:\Photo」ディレクトリの中に、「conv.bat」というバッチファイルを作ります。
(拡張子は「bat」で、ファイル名はなんでも構いません。)
「conv.bat」を右クリックし、メニューから編集を選択すると、メモ帳が開くので、次の内容をそのまま
コピペしてください。

<!--この下から-->
setlocal ENABLEDELAYEDEXPANSION

set char=d01
set ext=jpg

for %%f in ( *%char% ) do (
set fname=%%~nf
set fname=!fname:~0,-3!
ren %%f !fname!.%ext%
)
<!--この上まで-->

コピペしたら、上書き保存で、保存します。

保存後、「conv.bat」をダブルクリックすると、このバッチファイルが実行され、
「AAAAd01」、「555sQ1d01」、「9dkkkdsd01」といったファイルが、それぞれ「AAAA.jpg」、「555sQ1.jpg」、「9dkkkds.jpg」
といった形で、d01を省きかつ拡張子jpgを付加した形で、リネームされます。

ご参考まで。

投稿日時 - 2006-10-01 01:13:32

ANo.5

拡張子の無い「d01」で終わるファイル名というのは
例えば「aaad01」「bbbd01」…「zzzd01」というようなものでしょうか?

もしd01の前にある文字数が定型で同じであればコマンドプロンプトのワイルドカード「*」ではなく、任意の一文字を表す「?」を用いれば変換することが出来ます。

例.
c:\temp>dir
001d01
002d01
003d01
004d01
005d01
006d01

c:\temp>rename ???d01 ???.jpg

c:\temp>dir
001.jpg
002.jpg
003.jpg
004.jpg
005.jpg
006.jpg

このような感じです。
参考になれば幸いです。

投稿日時 - 2006-09-30 23:11:11

ANo.4

下の、d9212d01→9212d01の誤りです。

投稿日時 - 2006-09-30 23:02:37

ANo.2

>たとえば拡張子のないd01という文字列で終わるファイル名を一括してd01の部分を消して拡張子を.jpgにしたいのです。

これは、拡張子がない”d01”というファイル名ということですよね? d01の部分を消すということは、他の文字に置き換えてxxxx.jpgという形にしたいのでしょうか?それとも単に拡張子を加えて、d01.jpgという形にしたいのでしょうか?

後者であれば、

ren * *.jpg

で可能では?

投稿日時 - 2006-09-30 22:47:51

あわせてチェックしたい
  • コマンドプロンプトによるファイル名一括変換 ...
  • コマンドプロンプト ...
  • 【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について ...
PR
【夫婦アンケート】バレンタインしてますか?[ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら