• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル名を変えず、特定の数字を先頭に持っていく)

ファイル名を変えず、特定の数字を先頭に持っていく

このQ&Aのポイント
  • ファイル名を変えずに特定の数字を先頭に持っていく方法について質問があります。
  • 保管フォルダには多数のファイルがあり、ファイル名には4桁の数字が含まれています。
  • これまでは手動でファイル名を変更していましたが、自動化する方法を知りたいと思っています。

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

  • ベストアンサー
  • M_Sato
  • ベストアンサー率54% (550/1003)
回答No.1

質問です。 【お客様番号_5500_名取】→【5500お客様番号_5500_名取】 これはファイル名を変えるということですが、 【5500お客様番号_5500_名取】を【お客様番号_5500_名取】というファイル名だと、OSに認識させたいということなのでしょうか? それは無理でしょう。ファイル名を変えてもいいということでしたら、以下の手順でファイル名を変えることはできます。 1)dirコマンドでファイル名を抜き出し(〔例〕dir > list.txt)、編集して対象となるファイル名だけが並んだテキストファイルを作る。 (この編集は自動化できますが、それにはフォルダの中身と対象ファイル名の詳細が分からないと説明できません) 2)そのテキストファイルをsed.exeというストリームエディタで処理して、4桁の数字を抜き出し、元ファイル名と数字+元ファイル名を併記し、行の先頭にren を挿入したリストにする。 〔例〕 ren お客様番号_5500_名取.xxx 5500お客様番号_5500_名取.xxx 3)そのテキストファイルの拡張子を.batに変え、クリックする。 これでそのフォルダ内の全ファイルが、頭に4桁の数字をつけたファイル名にリネームされます。 sed.exeで実行するスクリプトは以下の1行だけです。 s/^\(..*\)\([0-9][0-9][0-9][0-9]\)\(..*\)$/ren \1\2\3 \2\1\2\3/ この手順はある程度自動化できますが、何の作業をしているのかということをちゃんと認識し、bat実行前にファイルの中身をよくチェックすることを怠ると、ファイル名がめちゃくちゃになって、取返しがつかなくなることがあります。

noname#250437
質問者

お礼

ありがとうございます 教えていただいた手順でやってみます

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

(1)まずVBSCRIPTの本やWEB記事で、ファイル名の変更の箇所を読んで学ぶこと。 >FileオブジェクトのNameプロパティを使用します。 https://step-learn.com/article/vbscript/059-file-nama-change.htmlなど。 (2)フォルダー内の1つ1つのファイルのファイル名はFor Eachで捉えられる。 この記事もWEB上に沢山ある。 (3)お客様番号_5500_名取の5500だけを抜き出すのが、VBAでのロジックを使うことになるが、Instr関数で「_」の2つを前後2つの位置を見つけ、その間の文字(今回は数字)を抜出し(例Mid関数)、元のファイル名の文字列の先頭部に結合する。 ーー 本件似た質問がよくあり、平凡で、この中でどこが難しいのかな。コードを書く気がしない程度のこと。

noname#250437
質問者

お礼

すみません。その平凡なことでさえよくわからないので 質問をさせていただいた次第です ご回答いただきありがとうございました

関連するQ&A