• ベストアンサー

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万ファイル以上あるのでバッチファイルで処理したいと思っています。

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは 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」と変名して実行するのはどうでしょうか? テストデータで試して下さい。

yodelforet
質問者

お礼

返事が遅くなって申し訳ありません。 テストしてみたところうまくいきました。 少し修正したりして使用してみます。 本当に助かりました。ありがとうございます。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

何をどうしたいのか、もうすこし言葉で書いてくれないと。 「番号の付いたファイル群があって、それをテキストファイルのその番号行目にある行の、ファイル名にリネームする。そのとき拡張子の前に"-1"を付ける」 「対象ファイル名の下4桁について、テキストファイルにあるファイル名のうち、拡張子の前がその4桁と一致する物を探し、そのファイル名にリネームする。そのとき拡張子の前に"-1"を付ける」 「対象ファイルをファイル名でソートして、先頭から、テキストファイルにあるファイル名に順番にリネームする。そのとき拡張子の前に"-1"を付ける」 などなど、どれか分かりませんが、それぞれ処理が違います。

yodelforet
質問者

補足

説明不足で申し訳ございません。 次回からもっとわかりやすく説明できるように致します。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは >「filename.txt」と「00000001.txt」等リネームしたいファイルがあるのは別フォルダ 別々のフォルダですか。 それぞれ固定されたパスでいいのですか? >ファイル自体は1万ファイル以上 という事は、1234567-0001.txt の「0001」4桁だけではリネーム前のテキストファイルを 判定出来ないですよね? 1234567-0001.txt ~1234567-9999.txt では、 00000001.txt ~00009999.txt の 9999ファイルしか処理出来ません。 実際はどうなっているのですか?

yodelforet
質問者

補足

説明不足で申し訳ないです。 >>「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)
回答No.1

こんにちは 「テキストファイル内の名前」のテキストファイルってなんですか? 00000001.txt 内に 1234567-0001.txt 00000002.txt 内に 1234567-0002.txt と書かれているのですか? 全て同じフォルダ内にあるのですか?

yodelforet
質問者

補足

ありがとうございます。 テキストファイルは別にありまして、仮にfilename.txtとしてその中に 「1234567-0001.txt」「1234567-0002.txt」「1234567-0003.txt」 と書かれています。 「00000001.txt」等は別の内容が書かれています。 「filename.txt」と「00000001.txt」等リネームしたいファイルがあるのは別フォルダになっています。

関連するQ&A