- ベストアンサー
batでテキストファイル内の文字を使ってリネーム
テキストファイル内の名前を使ってファイル名をリネーム+番号を付与するバッチファイルを作成したいです。 テキスト内は 1234567-0001.txt 1234567-0002.txt 1234567-0003.txt と書かれていて、 ファイルは 00000001.txt 00000002.txt 00000003.txt とあります。 これを 1234567-0001-1.txt 1234567-0002-1.txt 1234567-0003-1.txt という名前にリネームしたいです。 ファイル自体は1万ファイル以上あるのでバッチファイルで処理したいと思っています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは VBSでもいいでしょうか? テキストファイルに Const rText = "C:\test_1\File\filename.txt" Const tPath = "C:\test_1\" Dim ss, tt Dim objFS, objFile, objStream Set objFS = CreateObject("Scripting.FileSystemObject") Set objStream = objFS.OpenTextFile(rText, 1, False, 0) Do Until objStream.AtEndOfStream ss = objStream.ReadLine tt = Right("00000000" & Mid(ss, InStr(ss, "-") + 1, Len(ss)), 12) tt = tPath & tt Set objFile = objFS.GetFile(tt) objFile.Name = ss Loop objStream.Close Set objStream = Nothing Set objFS = Nothing として、 rText と tPath を適宜修正して保存し 「適当な名前.vbs」と変名して実行するのはどうでしょうか? テストデータで試して下さい。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
何をどうしたいのか、もうすこし言葉で書いてくれないと。 「番号の付いたファイル群があって、それをテキストファイルのその番号行目にある行の、ファイル名にリネームする。そのとき拡張子の前に"-1"を付ける」 「対象ファイル名の下4桁について、テキストファイルにあるファイル名のうち、拡張子の前がその4桁と一致する物を探し、そのファイル名にリネームする。そのとき拡張子の前に"-1"を付ける」 「対象ファイルをファイル名でソートして、先頭から、テキストファイルにあるファイル名に順番にリネームする。そのとき拡張子の前に"-1"を付ける」 などなど、どれか分かりませんが、それぞれ処理が違います。
補足
説明不足で申し訳ございません。 次回からもっとわかりやすく説明できるように致します。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは >「filename.txt」と「00000001.txt」等リネームしたいファイルがあるのは別フォルダ 別々のフォルダですか。 それぞれ固定されたパスでいいのですか? >ファイル自体は1万ファイル以上 という事は、1234567-0001.txt の「0001」4桁だけではリネーム前のテキストファイルを 判定出来ないですよね? 1234567-0001.txt ~1234567-9999.txt では、 00000001.txt ~00009999.txt の 9999ファイルしか処理出来ません。 実際はどうなっているのですか?
補足
説明不足で申し訳ないです。 >>「filename.txt」と「00000001.txt」等リネームしたいファイルがあるのは別フォルダ 別々のフォルダですか。 >それぞれ固定されたパスでいいのですか? それぞれ固定されたパスになります。 >>ファイル自体は1万ファイル以上 >という事は、1234567-0001.txt の「0001」4桁だけではリネーム前のテキストファイルを >判定出来ないですよね? >1234567-0001.txt ~1234567-9999.txt では、 00000001.txt ~00009999.txt の >9999ファイルしか処理出来ません。 先ほど仮で考えた命名でそこまで考えがまわっておりませんでした。 5桁以上取ることになりますので「1234567-00001.txt」としていただけますでしょうか。 何度も補足することになってすみません。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 「テキストファイル内の名前」のテキストファイルってなんですか? 00000001.txt 内に 1234567-0001.txt 00000002.txt 内に 1234567-0002.txt と書かれているのですか? 全て同じフォルダ内にあるのですか?
補足
ありがとうございます。 テキストファイルは別にありまして、仮にfilename.txtとしてその中に 「1234567-0001.txt」「1234567-0002.txt」「1234567-0003.txt」 と書かれています。 「00000001.txt」等は別の内容が書かれています。 「filename.txt」と「00000001.txt」等リネームしたいファイルがあるのは別フォルダになっています。
お礼
返事が遅くなって申し訳ありません。 テストしてみたところうまくいきました。 少し修正したりして使用してみます。 本当に助かりました。ありがとうございます。