• ベストアンサー

MS-DOSのバッチによるファイルリネームの方法

いつもお世話になります。 MS-DOS(windows XP)で、あるディレクトリ内のファイルを一括リネームするようなバッチスクリプトを作成しようとしています。 ファイル名は、例えば「10P1125532_20080130135757_condA_para50.txt」というような感じで、後半の「_condA_para50.txt」は共通で、これが2万ファイルほどあります。 それで、後半の「_condA_para50」の部分を削除しようとして、まずはコマンドプロンプトでそのディレクトリに移動してから、 ren *_condA_para50.txt *.txt とやったのですが、認識されていないのか、リネームされませんでした。(エラーも出ませんでした) スクリプトに書く場合は、どのようにすればちゃんとリネームされるのでしょうか? よろしくお願いします。

  • aneja
  • お礼率93% (379/405)

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.2

for %%A in (*.txt) do call :sub %%A goto :eof :sub set X=%1 set X=%X:_condA_para50=% ren %1 %X% goto :eof

aneja
質問者

お礼

早速のご回答、どうもありがとうございました。 パラメータをこういうふうに使えばいいのですね。 とても勉強になりました。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ 2つになりましたが、次のバッチファイルを試してみてください。 ------------------------------------------------------------ b1.bat ------------------------------------------------------------ @echo off for %%f in (*.txt) do cmd /c b2.bat %%~nf %%~xf :END ------------------------------------------------------------ b2.bat ------------------------------------------------------------ @echo off set tmp=%1 ren %1%2 %tmp:_condA_para50=%%2 :END ・ バッチファイルにこだわらなければ、次のユーティリティソフトも試してください。 http://hp.vector.co.jp/authors/VA014830/FlexRena/

aneja
質問者

お礼

早速のご回答、どうもありがとうございました。 パラメータをうまく使えばいいのですね。 勉強になりました。 教えて下さったツールも、機会があれば活用したいと思います。

関連するQ&A

  • MS-DOSバッチファイルコマンドのrenを使用してファイル名を置換することができない

    MS-DOSバッチファイルコマンドのrenを使用して sample1__01.txt と sample2__02.txt の __(アンダーバー2個)を_test_に置換して、sample1_test_01.txt とsample2_test_02.txt が 自動でできあがるようにしたいのですがうまくいきません。 見よう見まねで ren *__*.txt *_test_*.txt と書いて実行させてみたのですが sample1__test_.txt と sample2__test_.txt となってしまいます。 どうすれば思いどうりの結果を得ることができるのでしょうか? ご存知の方がおられましたらご回答をよろしくお願いします。

  • MS-DOSのバッチファイルの中で日本語ファイルを取り扱うには

    ある日本語で書かれたファイルの名称をバッチファイルで変更しようとしています。 rena.bat (以下中身) ------------- rename "ごろ猫のサンバ.txt" "test.txt" --------------------------------- 実行すると「The system cannot find the file specified. 」の表示です。 しかし、MS-DOSプロンプトのコマンドラインから直接 > rename "ごろ猫のサンバ.txt" "test.txt" を打ち込むと正常に動いてくれます。 目的はリネームをしようという事ではなく、バッチファイル中の日本語を含むファイル名(+パス)の取扱いができないことで派生して色々検証した結果、取り扱えないという状況で質問している次第です。 何か勘違いしているのでしょうか。バッチファイル中で日本語ファイルを取り扱うにはどうしたらいいのでしょうか?ご存知の方、ご教授ください。

  • Winでのバッチ処理

    CygwinもしくはMS-DOSプロンプトで以下のようなことは出来るでしょうか? あるディレクトリ内に.docファイルと.txtファイルが複数あり txtファイルだけを選択して、すべてのtxtファイルに記入されている dogという単語をcatという単語に書きかえる。 上記のような処理を一括して行うことは可能でしょうか? 済みませんがその方法を教えてください。

  • バッチコマンドを作りたい

    MS-DOSでのバッチコマンドについての質問です。 パスを引数で指定して、そのパスのディレクトリ以下(サブディレクトリも含む)のファイル名を全て取得し、加工して表示するバッチを作りたいのですが・・。 例えばコマンド名を jcm をすると C:\>jcm C:\temp と入力すると(「C:\temp」は引数)、C:\temp以下(サブフォルダも含めて)にある全てのファイル名を取得し、ファイル名がA.txt,B.txtだったとすると java A.txt java B.txt のように加工して表示したのです。 バッチファイルの中身はどのように記述すればよいでしょうか?

  • ディレクトリおよびファイルを作成する方法について(MS-DOSバッチ、vbs等)

    Windows Server 2003 についての質問です。 もしご存知でしたら、ヒントだけでもご教示願えますでしょうか。 目的  ・あるツールの評価をするため、多数のディレクトリ   とファイルを作成する必要があります。   これを手動で実行することは時間的に無理があるため、   MS-DOSによるバッチやvbs等スクリプトによる自動化を   したいと思っております。 やりたいこと  ・例えば、下記のような階層構造でフォルダおよびファイルを   作成するバッチを作成したいです。   c:\フォルダ1\フォルダ2\フォルダ3\フォルダ4\フォルダ5\フォルダ6 各階層のフォルダ配下にもサブフォルダとファイルを多数存在させます。   ファイルサイズは固定です。   フォルダ、ファイルの名前は単純なもので構いませんが、   番号を振りたいです。   方法としては、まずは元になるファイルを作成しておき、   あとはforコマンドでディレクトリを作成してファイルを   コピーしていけば良いと思っておりますが、実際に   どのようにMS-DOSバッチ化(もしくはvbsスクリプト化)   すれば良いか不明です。 お手数ですが、どうぞご教示のほど宜しくお願い致します。

  • バッチにすると動作しない

    コマンドプロンプト初心者です。 仕事でファイルの名前を一括変換する為にバッチを作成したいのですが、 コマンドプロンプトでは動作するのに、bat形式のファイルに保存して実行すると、一瞬だけ窓が開いてすぐ終了してしまいます。 変換はもちろんされておりません。 フォルダの構成は下記の通りです。 フォルダ ┣フォルダA    ┣p001-a01_01.jpg    ┣p002-b01_01.jpg    ┗p003-c01_01.jpg ┣フォルダB    ┣p001-a01_01.jpg    ┣p002-b01_01.jpg    ┗p003-c01_01.jpg ┗フォルダC フォルダ内にある001-a01_01.jpgの【_01】を消して001-a01.jpgという風にしたいのですが、 cd C:\Data for /r /d %i in (*) do ren %%i\p???-a01_01.jpg p???-a01.jpg for /r /d %i in (*) do ren %%i\p???-b01_01.jpg p???-b01.jpg for /r /d %i in (*) do ren %%i\p???-b01_01.jpg p???-c01.jpg 上記のコマンドをメモ帳に書いて、コマンドプロンプトで実行したところ、ファイル名の変換はされました。 しかし、そのメモ帳をbat形式で保存をして実行をすると、冒頭で書いたように実行されません。 書き方など、自分なりに調べて試してみたのですが、やはり変換されません。 コマンドプロンプトで実行する時と、バッチで実行する時では書き方が違うのでしょうか? よろしければ知恵を貸していただきたく思います。

  • MS-DOS バッチファイルの開き方について

    現在PCの中にMS-DOS バッチファイルがあります。 これは去年ダウンロードしたもので、映像が入っていると思うのですが、扱い方が分かりません。 MB-DOSは、Microsoft社のOSである事は分かっているのですが、私が使っている機種はWindows XPです。 MB-DOSと書かれたファイルをXPで見る事は可能でしょうか? もし可能でしたら、その開き方を教えて頂きたいです。 ファイルをクリックすると、一瞬コマンドプロンプトの画面が現れすぐに消える状況です。

  • コマンドプロンプトによるファイル名一括変換

    コマンドプロンプトで、サブディレクトリを含めたファイル名の一括変換 をしたいのですが、次のコマンドを叩いたら、「コマンドの構文が間違っています」と出てしまいました。どこがおかしいのでしょうか? カレントディレクトリの中の「*.txt」ファイルをすべて「*.doc」にしたい場合↓ for /r /d %i in (*) do ren %i\*.txt *.doc よろしくお願いします。

  • MS-DOSのバッチファイルでアセントの付いている文字のフォルダへのコピーについて

    スペイン語版のWindowsXPを使用しています。MS-DOSのコマンドでバッチファイルを作りフォルダへファイルをコピーしようとしているのですが、アセントのついている文字のフォルダへファイルをコピーできません。コマンドプロンプトに表示はされる時にその文字だけ文字化けのような状態になってしまいます。直接MS-DOSにコマンドを打ってコピーする事はできるのですが、バッチファイルにするとうまくいきません。。。アセントとは、aeiouのアルファベットの上に " ´ "がついている文字です。もしおわかりになればご教授ください。よろしくお願い致します。

  • windows2000のコマンドプロンプトのショートカット毎のバッチファイルの自動実行

    お世話になります。 現在、コマンドプロンプトのショートカットを起動した後、 物によって別々のバッチファイルを実行しています。 (複数のディレクトリにショートカットがあります) そこで、ショートカット毎に自動実行されるバッチファイルを 指定したいのですが、どのようにすればいいのか分かりません。 windows98の頃のMS-DOSプロンプトの頃は、 ショートカットのプロパティを見ると、 「バッチファイル」という項目があって、 ショートカット毎に実行できるバッチファイルが 指定できたと思いますが、 windows2000のコマンドプロンプトの場合は どのように行えばいいのでしょうか?