プロが教えるわが家の防犯対策術!

MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更する方法はありますでしょうか?
例えば、
「a.dat.gz」「b.dat.gz」「c.dat.gz」
上記のような複数ファイルを以下のように変更したいと思っています。
「a.gz」「b.gz」「c.gz」

ちなみに次のコマンドを試してみたのですがダメでした。
ren *.dat.gz *.gz

実際はバッチファイルから処理をさせたいと思っています。
よろしくお願いいたします。

A 回答 (2件)

★本当に『a.dat.gz』、『b.dat.gz』、『c.dat.gz』の形式の名前だけですか。


・上記の場合ならば、
 『for %%i in ( a b c ) do ren %%i.dat.gz %%i.gz』で出来ますけど。
 ※a、b、c 以外にあればカッコ内に増やして下さい。
 ※また、バッチファイル内ですので %% と2つにしています。コマンドラインでは % ですよ。
・他にもいろいろな方法はありますけど一例だけ紹介しました。
 ちなみに試していませんが、for 文を使えば ren も上手く利用できます。

その他:
・ワイルドカードの指定で拡張子は、最後のピリオドのフィールドを指します。
 よって、『ren *.dat.gz *.gz』という指定ではすでに拡張子が『.gz』なので上手く出来なかったのです。
・以上。参考に。
    • good
    • 1
この回答へのお礼

バッチファイル内での%%の記述は躓くところでした。
分かり易い説明をありがとうございました。

お礼日時:2007/04/17 20:03

for /f "usebackq delims=. tokens=1" %i in (`dir /b *.dat.gz`) do echo ren %i.dat.gz %i.gz



こうかな?
確認用にechoを入れてますので、echoを消せばリネームされます。
    • good
    • 0
この回答へのお礼

ありがとうございます。うまく実現できました。
for命令は知っておくと便利ですね。

お礼日時:2007/04/17 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!