
フォルダ内にある複数ファイルを、バッチファイルで一括ファイル名変更をしようとしています。
元ファイル名は、
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になってしまう・・・
現状のファイル名の一部を取得して、改名後のファイル名につける
ということはできるのでしょうか?
よろしくお願いします。

No.4
- 回答日時:
No.2です。
単純なファイルのリネームで良ければ、エディタの使い方の問題のような気がするのですが。
まず、ファイル一覧は「コマンドプロンプト(DOS窓)」から一覧を取得できます。
> DIR *.TXT > RENAME.BAT
そして、そのファイルをたとえば秀丸エディタなどであればキーボードマクロが使えますから、
23_ABCA_K.txt
を
REN 23_ABCA_K.txt 23_件数表.txt
というバッチファイルを作るのはそんなに難しくないと思います。
(但し、「件数表」など漢字の部分に関しては手入力になるとは思いますが)
あるいは、Excelなどでも列の文字列を連結することでできるとは思いますが。
No.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に変えました。
変数に入れる という発想までは出たのですが
それを記述するスキルがありませんでした。
他の件でも参考にできそうです。
ありがとうございます。

No.2
- 回答日時:
答えになっていませんが
「Perl」を使われてはいかがでしょう。(フリーソフト)
Perlと言うと、webでのCGIの代名詞のように言われていますが、元々はファイル内容やファイル名などのテキスト文字列を処理するためのものです。
失礼かも知れませんが、上記質問を読んでも明確な変換規則がよく分かりませんし、限られたところで簡潔明瞭に説明できない場合もあるでしょう。
それならば、試行錯誤しながらでも、自分で作られてみてはいかがでしょう。
※Windowsでは、多少の制約があるかも知れませんが。
会社の環境で、フリーソフトを簡単に入れられないので
Perlは検討しませんでした。
分かりにくい内容にも関わらず、回答ありがとうございます。
たしかに、説明するの難しいのですよね・・・
No.1の方の方法でできました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIX ファイル存在チェックの方法
-
【VBA】テキストファイルから特...
-
.txtって、縦書きにはならない...
-
xcopyで特定のファイルのみをコ...
-
bashで、gotoのようなラベルに...
-
echoの出力の最後のスペースを...
-
fcコマンドにて異なるファイル...
-
シェルから引数を使用してsedコ...
-
バッチファイルで特定の文字列...
-
フォルダに入っているファイル...
-
大量のフォルダからひとつのフ...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトのエラーに...
-
特定フォルダ内のファイルを自...
-
複数のbatファイルを自動実行し...
-
コマンドプロンプトの「%1」と...
-
名前の変更ができない動画ファイル
-
Excel VBAで複数のバッチファイ...
-
win10の「フォト」で、「次へ」...
-
同名のフォルダを検索・削除したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
echo "abc" >> test.txt で、先...
-
コマンドプロンプトで相対パス...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで標準エラ...
-
バッチファイル 指定行の切り出し
-
バッチファイルのfor文を使って...
-
バッチファイル 現在のフォルダ...
-
コマンド実行結果を環境変数に...
-
バッチファイルで改行の出力
-
NULLの置き換えについて
-
.txtって、縦書きにはならない...
-
複数テキストファイル連結につ...
-
バッチコマンドの「set」で入力...
-
Diskpart のリダイレクトの質問...
-
特定のファイルだけをサブディ...
-
DOSプロンプト:一番速く10万...
-
nkfで全角ハイフンが半角になる...
おすすめ情報