MS-DOSバッチファイルコマンドのrenでファイル名の置換がうまくいかない

このQ&Aのポイント
  • MS-DOSバッチファイルコマンドのrenを使用してファイル名を置換することができない問題について解決方法を教えてください。
  • renコマンドを使用してファイル名の__(アンダーバー2個)を_test_に置換したいが、うまくいかない。
  • 見よう見まねで ren *__*.txt *_test_*.txt と書いたが、思いどうりの結果が得られない。解決方法を教えてください。
回答を見る
  • ベストアンサー

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 となってしまいます。 どうすれば思いどうりの結果を得ることができるのでしょうか? ご存知の方がおられましたらご回答をよろしくお願いします。

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

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

すいません。 誤:for %%A (*__*) do call :sub %%A 正:for %%A in (*__*) do call :sub %%A

nana_watuki
質問者

お礼

早速やってみたところ問題を解決することができました。 ご回答していただきどうもありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.1

ren コマンドで * が使えるのはきわめて限定的なケースです。 ren A*.txt B*.txt のような。 バッチファイルを使って、1つずつリネームするしかないですね。 for %%A (*__*) do call :sub %%A goto :eof :sub set A=%1 ren %A% %A:__=_test_% goto :eof

nana_watuki
質問者

補足

上記の記述をコピー&ペーストしてバッチファイルを実行してみたのですが ファイル名を変更することができませんでした。 何かやり方に問題があったのでしょうか?

関連するQ&A

  • コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい

    コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい BAT実行や、BATにドロップする程度の操作でファイル名置換したいと思っています。 たとえば、「abcTEST123.txt」というファイルを下記のバッチにドロップすると、 「abctest123.txt」と言うファイル名に置換されます。 for %%A in (*TEST*.txt) do call :sub %%A :sub set A=%1 ren %A% %A:TEST=test% しかし「TEST」をスペースにしてもファイル名の置換はできません。 コマンドプロンプトではスペースは扱えないのでしょうか。 解決策がありましたらご教授願います。

  • バッチコマンドで改名

    環境:Windows 2000Pro 現在、拡張子を変換するのに以下のような処理をしています。 1)変換対象ファイルの一覧をバッチ・ファイルとして保存。   // bak_lst.cmd ----------------------------    ren E:\Test\Sample.txt Sample.bak    ren E:\Test\Sample02.txt Sample02.bak             :   // bak_lst.cmd -END ----------------------- 2)起動用バッチ・ファイル(to_bak.cmd)からCALL文で(1)にて作成したバッチ・ファイルを呼び出す。   // to_bak.cmd ---------------    @echo off    call E:\Test\bak_lst.cmd   // to_bak.cmd -END ---------- ■ これを、 1)変換対象ファイルの一覧は、ファイル名のみの羅列でテキストファイルとして保存。   // bak_lst.txt ------------    E:\Test\Sample.txt    E:\Test\Sample02.txt         :   // bak_lst.txt -END ------- 2)バッチ・ファイルで(1)にて作成したテキストファイルを読み込んで拡張子の変換を実行。   //???.cmd: for %%f in (E:\Test\list.txt) do ren ・・・   // 結果 -------------------    E:\Test\Sample.bak    E:\Test\Sample02.bak         :   // 結果 -END -------------- と言うように、出来るでしょうか? 厚かましい質問ですが、よろしくお願いいたします。

  • コマンドプロンプトのバッチについて

    test01.bat >> YYMMDD結果.txt コマンドプロンプトのバッチ処理を実行結果をテキストで保存したいのですが、ファイル名を、 「YYMMDD結果.txt」と"YYMMDD"に本日の日にちを入れたいのですが、どのようにすればよいのでしょうか?

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

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

  • このようなフォルダ名の一括置換をするには?

    次のように、途中の@を空白に置換して末尾に@を付け直す処理です。 "200805@Athletic Meet" → "200805 Athletic Meet@" 私の場合、 dir /b "*@*" > list.txt として、結果をテキストエディタで次のような形式に一括編集。 ren "200805@Athletic Meet" "200805 Athletic Meet@" で、バッチファイルとして実行。 ---- もっと簡単な手順はありますでしょうか? ren "*@*" "*@" ・・・これじゃダメですしね。。。。

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

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

  • バッチファイルで実行できたりできなかったり

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 ping [example.com] > result.txt tracert [example.com] >> tr_result.txt ipconfig /all > ipc_result.txt 次に、各コマンドをテキストファイルに書き込んで、それぞれ "p_test.bat" # 内容は ping コマンド "tr_test.bat" # 内容は tracert コマンド "ipc_test.bat" # 内容は ipconfig コマンド と命名しデスクトップに配置、ダブルクリックで実行してみました。 すると、このうち正常に実行(結果をテキストファイルに出力)されたのは tr_test.bat のみでした。 ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか? バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。 この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。 ちなみに、OS は Windows XP SP2 です。 よろしくお願いいたします。

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

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

  • バッチファイル XCOPYで上書きしない

    バッチファイルでXCOPYを実行し既存ファイルを上書きしないようにしたい(上書き確認を自動でNo返答する)さらに、存在しないファイルはコピーしたい ●構成 ・C:\test\A\A.txt がある ・バッチファイルと同列に、A\A.txt 及び B.txt が存在  さらにバッチファイルと同列に、からフォルダB が存在 ●試したコマンド: XCOPY * C:\test /E /-Y /Q < nul > nul ●結果:C:\test\A\A.txt は上書きされないが、B.txt 及びフォルダBがコピーされない ●求める結果: C:\test\A\A.txt は上書きされず、コピー先に存在しないB.txt 及びフォルダBがコピーしたい 宜しくお願いいたします。

  • バッチファイル内置換

    バッチファイルで、置換をしたいのですが、"="と"<"の置換が出来ません。 ping出力を「file.txt」へ保存し、保存した「file.txt」を一行づつ読み出し下記を実行しています。 for /f "delims=" %%a in ( orig ) do ( set line=%%a call :sub ) :sub set tmp=%line% set tmp=%tmp:<=,% set tmp=%tmp:= =,,% set tmp=%tmp:"時間" =,% set tmp=%tmp:ms=,ms% echo %tmp%>>%CSV_Name% goto :EOF :end 置換出来ないのは、"=" と "<"の文字だけが置換出来ません。 ネットで調べたのですが、"^" でエスケープしても、""二重引用部でくくっても、正しく置換でき有ません。