• ベストアンサー

バッチコマンドで改名

K-1の回答

  • K-1
  • ベストアンサー率21% (832/3844)
回答No.3

「特定の拡張子を持った一覧ファイルに記述されたファイル全てを特定拡張子に変換する」というのでしたら sedやawkを組み合わせれば可能です。 ファイル一覧として ---- list.txt ----- aaaaa.txt bbbbb.txt cccb.txt ---- list.txt ----- と書かれているとします。 バッチとスクリプトとして ---- reext.bat ----- sed -f sp list.txt >tmp awk -f sp2 tmp >tmp.bat call tmp.bat del tmp del tmp.bat ---- reext.bat ----- ---- sp ----- s/.txt//g ---- sp ----- ---- sp2 ----- {printf("ren %s.txt %s.bak\n", $0, $0)} ---- sp2 ----- この3つのファイルをつくり、reext.batを実行すると list.txtの中のファイルが aaaaa.txt -> aaaaa.bak bbbbb.txt -> bbbbb.bak cccb.txt -> cccb.bak とリネームされるはずです。

Bo_Bo
質問者

お礼

実は、この改名処理は某エディタのマクロから呼び出す形で実行しておりまして、そのマクロではバッチコマンドではなくて、Perlスクリプトを呼び出しています。 しかし、出来るならソフト(Perl)に依存することなくOS標準の機能で簡単に、且つ、スマートに出来ないかと思い質問した次第です。お手を煩わしてすみません。 sed, awkのサンプルソースまで用意していただき、ありがとうございました。

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

  • Windowsのバッチについて

    お世話になります。 Windowsのバッチについてアドバイスをいただけますでしょうか。 ある文字列の書かれているファイルを1つ作成して「拡張子のあるもの」、「無いもの」2種類を作成したいと考えています。 例) 拡張子の無いもの:test01~test3000 拡張子のあるもの:text01.txt~text3000.txt 3000個と大量のファイルが必要なためechoとcopyコマンドを使って次のように指定しましたが、 ■sample.batの中身 ========================== echo testdata > test01 echo testdata > test02 echo testdata > test03 echo testdata > test04 echo testdata > test05 ~中略 copy test01 > test01.txt copy test02 > test02.txt copy test03 > test03.txt copy test04 > test04.txt copy test05 > test05.txt ~以下省略 ========================== 実際に作成された拡張子”.txt”の方を見てみると 次のように記載されており正しくファイルをコピーできません。 ■test01.txt~test05.txtの中身 =================================================== ファイルを同じファイルにコピーすることはできません。 0 個のファイルをコピーしました。 =================================================== どのようにすればファイルコピーを正しく行うことが出来ますでしょうか。 また、この方法では実際にbatファイルの編集に時間がかかってしまうためあまり実用的ではありません。 もし、他に良い方法があればアドバイスをいただけますと幸いです。

  • バッチファイルで

    バッチファイルでファイル名をキーボードで変更するのは どうすればよいのでしょうか 例:A.txtと言うファイル名をキーボードから2006data.txtにしたいのですが REN C:\A.txt 2006data.txt はわかるのですが2006.txtを変数にして その変数をキーボードで入力する方法(今更バッチファイルでもないのですが?) よろしくお願いします。

  • ファイルのバッチ処理について

    バッチ処理を勉強しているところです。 ひとつの問題が解決できていないので、わかるひとは教えて もらえませんか? C:\bom.txtがあって、C:\temp\a.txtとC:\temp\d.txt, C:\temp\a\a.txt と C:¥temp\b\e.txtもあります。 for でC:\bom.txtファイルとほかのファイルと再帰的に結合して、 ファイル名はそのままにしたいですが、 @set bomfilepath=C:\ 考えているバッチは以下のようになるが、失敗しました。 for /R %1 %%f in (*.*) do @( @rem echo %%f call copy /B %bomfilepath%bom.txt+%%f %%ftemp call del /Q %%f ren %%ftemp %%f ) 原因はどこですか?

  • バッチファイル 2ファイルをfor /f処理したい

    バッチファイルで別の2つのファイルを読み込んでfor /f処理するには 変換前のファイルのファイル名と 変換後のファイルのファイル名が それぞれ別のファイルに書かれていて この2つのファイルを読み込んで リネームするバッチファイルを 記述したいのですが 2つのfor /fを使った場合、 一方が他方にネストされてしまうのですが このような場合は どのように記述するのでしょうか。 例えば、 変換前のファイル名が書かれたファイル(s.txt)と 変換後のファイル名が書かれたファイル(d.txt) がある場合、 abc.txtをqrs.txt d f.txtをtuw.txt ghi.txtをx z.txt  : にリネームしたいのですが もちろんtest1.batではうまくいきません。 ---test1.bat------------------- for /f %%a in (s.txt) do for /f %%b in (d.txt) do ren "%%a" "%%b" ------------------------------ ---s.txt---------------------- abc.txt d f.txt ghi.txt : ---d.txt---------------------- qrs.txt tuw.txt x z.txt : ------------------------------ 以下の sd.txt のように1つのファイルにして test2.bat のようにすればできますが s.txt と d.txt の2つのファイルのままで処理するには どのように記述すればよいのでしょうか。 ---test2.bat------------------- for /f "tokens=1,2 delims=," %%a in (sd.txt) do ren "%%a" "%%b" ---sd.txt---------------------- abc.txt,qrs.txt d f.txt,tuw.txt ghi.txt,x z.txt : ------------------------------- よろしくお願いします。(Windows7)

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

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

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • WindowsNT,Windows2000のバッチファイル

    おしえてください。 WindowsNT,Windows2000で作成するバッチファイルの拡張子は 「.bat」、「.cmd」のどちらがベターですか? WindowsNT,Windows2000でバッチファイルを作成して 実行したいのですが、そのバッチファイルの拡張子として (1)「.bat」、(2)「.cmd」の2種類で実行可能と認識しています。 私は (1)「.bat」は「command.com」、(2)「.cmd」は「cmd.exe」より動作すると 思っています。 よって(1)「.bat」だと16ビットで動作するため、何たかの不具合がでないのかなと懸念しています。 (1)「.bat」、(2)「.cmd」どちらでもいいのなら現在つくっている (1)「.bat」でいきたいのですが・・・。 どうかご回答お願いします。

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

    コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい 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」をスペースにしてもファイル名の置換はできません。 コマンドプロンプトではスペースは扱えないのでしょうか。 解決策がありましたらご教授願います。

  • バッチファイルでファイル名をリネームのコマンドにつ

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたjかご教授いただけますでしょうか。よろしくお願い致します。