プロが教える店舗&オフィスのセキュリティ対策術

フォルダ内にある複数ファイルを、バッチファイルで一括ファイル名変更をしようとしています。
元ファイル名は、
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になってしまう・・・

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

よろしくお願いします。

A 回答 (4件)

日付の部分を?に



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

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

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

お礼日時:2009/06/26 13:33

No.2です。



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

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

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

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

あるいは、Excelなどでも列の文字列を連結することでできるとは思いますが。
    • good
    • 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に変えました。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/06/26 13:53

答えになっていませんが


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

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

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

※Windowsでは、多少の制約があるかも知れませんが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/26 13:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています