• ベストアンサー

BAT処理でファイル名の変更

BAT処理で複数ファイルの名前変更を自動化させたいのですが、うまくいかず困っております。 [変更前ファイル名]  0000001234_20140731.txt ・・・ 桁数固定のID+アンダーバー+年月日.txt [変更後ファイル名]  ID1234DATE20140731_0000001234_20140731.txt   ・・・ "ID" + IDのゼロサプレス + "DATE" + 年月日+ アンダーバー +元ファイル名 これらの処理を同じディレクトリ内のファイル全てに行うにはどのようにすればよろしいでしょうか? ご指導頂けますよう宜しくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

先頭の桁数固定は10桁と言うことですよね。 pushd ディレクトリ for %%A in (??????????_????????.txt) do call :sub %%A pause exit /b :sub set A=%1 set ID0=X%A:~0,10% :delzero set ID=%ID0:X0=X% if %ID% neq %ID0% set ID0=%ID%&goto delzero set ID=%ID:X=% set YMD=%A:~11,8% ren %A% ID%ID%DATE%YMD%_%A% goto :EOF

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>0000001234_20140731.txt これはファイル名のチェックはいらない?つまり 数値10ケタ+アンダースコア+数字8ケタ+ピリオド+txt をチェックしないの? 下手したら手違いで変換後のファイル名を再度変更しようとしてひどい状況に なりそうですが・・・ またゼロサプレスで処理するとファイル名の長さが変わってくるし ファイル名でソートしてもグダグダになりますが大丈夫ですか?

関連するQ&A

  • ☆BAT:日時をTXTファイル名にして出力するには

    例えば作成したいテキストファイルが有るとします。 現行はBAT実行の都度、手作業でファイル名を「年月日時分秒」にリネームしています。 これを自動処理する妙案が有れば是非ご指導下さい。 宜しくお願いいたします。 echo %COMPUTERNAME%今日は良いお天気ですね > D:\yyyymmdd_hhmmss.txt 以上

  • batファイルでrenameができません。

    Windowsのbatファイルでrenameをするにはどうすればよいでしょうか? カレントディレクトリ └ A というディレクトリ構造があって、Aの中には「a.txt」があるとします。 カレントディレクトリから、 「rename "./a/A.txt" B.txt」 と書いてあるbatファイルを起動しても、「a.txt」の名前が変更されません。 「指定したパスが見つかりません。」と出てきてしまいます。 ダブルクォーテーションを取ったりつけたり、絶対パス、相対パスを書いたりと いろいろ試しましたがだめでした。 何か方法はないでしょうか?

  • ファイル移動処理(コマンドプロンプト batファイル)

    ファイル移動処理(コマンドプロンプト batファイル) .batファイルでファイル名に日付がついたファイル(例:yyyymmdd_test.txt)の最新日付から2世代前のファイルまでをディレクトリに移動するような処理を記述したいのですが、やり方がわかりません。 例) 20100924_test.txt →移動対象外 20100925_test.txt →移動対象外 20100926_test.txt →移動対象 20100927_test.txt →移動対象 20100928_test.txt →移動対象 今、この下記の様に記述をしていますが意図した処理になりません。 どなたか助言を頂けないでしょうか? -------------------------------------------------------- mkdir temp set num=0 for %%f in (????????_test.txt) do ( set /a num+=1 if %num%==1 move %f% \temp\%f if %num%==2 move %f% \temp\%f if %num%==3 move %f% \temp\%f )

  • batファイル処理でのテキストファイルの内容変更

    batファイル処理のみにてテキストファイルの内容を変更する事は可能でしょうか。 例えば aaa=1111 bbb=2222 ccc=3333 ddd=4444 という内容のテキストファイルが存在し、batファイルにて aaa=1111 bbb=2222 ccc=5555 ddd=4444 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • Batファイルについて

    複数階層のフォルダにまたがって格納されているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルのファイル名の頭(顧客IDになっている)を拾ってリストにしてあります。移動させたいエクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っています。 現在は複数あるフォルダの中に下記のBatファイルと対象リスト.txtをを入れて1フォルダずつ実行していますが、数十個あるフォルダなので作業が大変です。最上階層で出来るようにしたいのです。 FOR /F %%i in (list.txt) do copy %%i "移動先のパス"

  • batファイルの相対パス

    batファイルの相対パス あるバッチが相対パスであるファイルを参照しています このバッチファイルを直接起動すれば、正しく参照できますが、 別のディレクトリにいる別のバッチファイルからcallされた場合、 呼び出し先の相対パスではなく、 呼び出し元の相対パスになってしまいファイルを参照できません。 この問題をスマートに解決する方法はありませんか? 例のchild.batからはfile.txtを参照できますが、 parent_1.bat経由の場合、ファイルが見つかりませんとなります。 child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。 宜しくお願いします。 【例】 c:\ | +-dir_a | | | +-child.bat | | | +-file.txt | +-dir_b | | | +-parent_1.bat | +-dir_c | +-parent_2.bat ===== file.txt ===== test-test-test ===== file.txt ===== ===== child.bat ===== type ./file.txt pause ===== child.bat ===== ===== parent_1.bat ===== call c:\dir_a\child.bat ===== parent_1.bat =====

  • batファイルかフリーソフトでファイル名の特定文字まで削除できますか?

    batファイルかフリーソフトでファイル名の特定文字まで削除できますか? batファイルにて元のファイル名の後ろに日付と時刻を入れることはできたのですが、 例: abc.txt → abc_1006160810.txt これを更新するために、_までを削除したいのですが、どのようにbatファイルを作ればいいのか分かりません。 どなたか、知恵をいただけませんか。 したいことは、 abc_1006160810.txt の _1006160810 を削除するだけのbatファイルです。 batファイルではなく、フリーソフトにコマンドラインで一発変換でも構いません。 よろしくお願いいたします。

  • DOSバッチファイルで日々ファイル名が変動するファイルの存在チェック

    こんにちは。 フォルダにあるファイルが存在するときに処理を行うバッチファイルを作成しています。 あるファイル名は一部は固定文字で一部は変動します。 具体的には sampleYYMMDD.txt となり、YYMMDDは変動し、その内容は他のファイルdate.txtに入っています。 例えば、date.txtには 041021 がはいっていて バッチファイルでsample041021.txtがあれば次の処理を行うといったロジックを記述したいのですが、どうしたらできますでしょうか? ファイル名が固定であれば単純に FOR %%F DO IF %%F==sample041021.txt 処理 とできそうなのですが、ファイル名の情報はdate.txtの内容に依存します。 もっと簡単なやり方でもかまいません。ヒントをいただけないでしょうか?

  • batファイルについて

    C:\work\a\a.txt C:\work\a\b.txt C:\work\a\c.txt C:\work\b\a.txt C:\work\b\d.txt C:\work\c\a.txt C:\work\d\a.txt C:\work\d\e.txt C:\work\d\f.txt 上記のようなファイルがあったとき 各ディレクトリのa.txtだけを残したいのですが (他のファイルは全部削除) どのようなbatファイルを作成すればよろしいのでしょうか。 すみませんが方法がありましたら教えてください。

  • ファイル名が記入されたファイルを読み込んでcdする

    ファイル名が記入されたファイルを読み込んでカレントディレクトリを変更するにはどうしたら良いでしょうか?   具体的に申し上げると、    カレントディレクトリに filepass.txt というファイルが存在し、 中身には、例えば、 C:\Software と書かれています。   MATLABで、 filepass.txtを読み込み、 中に書かれている、 ディレクトリ名に、   カレントディレクトリを変更する(cd) にはどうしたらよいでしょうか?

専門家に質問してみよう