みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイル名の一部を変更するバッチファイル

フォルダ内にある複数ファイルを、バッチファイルで一括ファイル名変更をしようとしています。
元ファイル名は、
23_ABCA_K.txt
23_ABCL_K.txt
23_ABCL_E.txt
23_ABCA_K.txt というように、頭2桁(日付)は共通で4ファイルあります。

これを、頭2桁を維持して、アルファベットのところを変更したいのです。
23_ABCA_K.txt→23_件数表.txt
23_ABCL_K.txt→23_集計表.txt
23_ABCL_E.txt→23_エラー数.txt
23_ABCA_K.txt→23_合否.txt という具合です。

rename 23_ABCA_K.txt 23_件数表.txt
とすると、頭2桁が変化したときに対応できないし、

%date: などでシステム日付を取得すると、
23_ABCA_k.txtを24日に改名すると、23が保持されず24になってしまう・・・

現状のファイル名の一部を取得して、改名後のファイル名につける
ということはできるのでしょうか?

よろしくお願いします。

投稿日時 - 2009-06-25 10:49:56

QNo.5073076

困ってます

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

日付の部分を?に

ren ??_ABCA_K.txt ??_件数表.txt

ワイルドカードの?は1文字何でも良いとなりますので
23日と24日があれば両方変更されます
それと、件数表と合否のファイル名が同じですよ

投稿日時 - 2009-06-25 11:46:06

お礼

この方法でできました。
ワイルドカード”?”の使い方が頭にありませんでした・・・
たいへん助かりました。ありがとうございます!

投稿日時 - 2009-06-26 13:33:23

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

No.2です。

単純なファイルのリネームで良ければ、エディタの使い方の問題のような気がするのですが。

まず、ファイル一覧は「コマンドプロンプト(DOS窓)」から一覧を取得できます。

> DIR *.TXT > RENAME.BAT
そして、そのファイルをたとえば秀丸エディタなどであればキーボードマクロが使えますから、
23_ABCA_K.txt

REN 23_ABCA_K.txt 23_件数表.txt
というバッチファイルを作るのはそんなに難しくないと思います。
(但し、「件数表」など漢字の部分に関しては手入力になるとは思いますが)

あるいは、Excelなどでも列の文字列を連結することでできるとは思いますが。

投稿日時 - 2009-06-25 20:32:00

ANo.3

REM カレントフォルダの全txtを対象にforループ
for %%f in (*.txt) do call :sub %%f

REM 終わり
exit

REM サブルーチン
:sub

REM moji0にファイル名セット
set moji0=%1%

REM moji1にファイル名先頭3文字をセット(アンダーバー含む)
set moji1=%moji0:~0,3%

REM moji2にファイル名先頭4文字以降をセット
set moji2=%moji0:~3%

REM IF処理でリネーム
if %moji2%==ABCA_K.txt ren %1 %moji1%件数表.txt
if %moji2%==ABCL_K.txt ren %1 %moji1%集計表.txt
if %moji2%==ABCL_E.txt ren %1 %moji1%エラー数.txt
if %moji2%==ABCB_K.txt ren %1 %moji1%合否.txt

REM 責任は持てないので対象フォルダをコピーしてから試してください。
REM 対象フォルダへバッチファイルを入れて実行してください。
REM echo命令は適当に入れてください。
REM ファイル名がだぶっているので、ABCB_K→合否.txtに変えました。

投稿日時 - 2009-06-25 15:18:29

お礼

変数に入れる という発想までは出たのですが
それを記述するスキルがありませんでした。
他の件でも参考にできそうです。
ありがとうございます。

投稿日時 - 2009-06-26 13:53:13

答えになっていませんが
「Perl」を使われてはいかがでしょう。(フリーソフト)
Perlと言うと、webでのCGIの代名詞のように言われていますが、元々はファイル内容やファイル名などのテキスト文字列を処理するためのものです。

失礼かも知れませんが、上記質問を読んでも明確な変換規則がよく分かりませんし、限られたところで簡潔明瞭に説明できない場合もあるでしょう。

それならば、試行錯誤しながらでも、自分で作られてみてはいかがでしょう。

※Windowsでは、多少の制約があるかも知れませんが。

投稿日時 - 2009-06-25 13:18:07

お礼

会社の環境で、フリーソフトを簡単に入れられないので
Perlは検討しませんでした。
分かりにくい内容にも関わらず、回答ありがとうございます。
たしかに、説明するの難しいのですよね・・・
No.1の方の方法でできました。

投稿日時 - 2009-06-26 13:36:28

あなたにオススメの質問