• ベストアンサー

MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更

MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更する方法はありますでしょうか? 例えば、 「a.dat.gz」「b.dat.gz」「c.dat.gz」 上記のような複数ファイルを以下のように変更したいと思っています。 「a.gz」「b.gz」「c.gz」 ちなみに次のコマンドを試してみたのですがダメでした。 ren *.dat.gz *.gz 実際はバッチファイルから処理をさせたいと思っています。 よろしくお願いいたします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★本当に『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』なので上手く出来なかったのです。 ・以上。参考に。

kaimoka777
質問者

お礼

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

その他の回答 (1)

  • luka3
  • ベストアンサー率72% (424/583)
回答No.2

for /f "usebackq delims=. tokens=1" %i in (`dir /b *.dat.gz`) do echo ren %i.dat.gz %i.gz こうかな? 確認用にechoを入れてますので、echoを消せばリネームされます。

kaimoka777
質問者

お礼

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

関連するQ&A