大量のファイルの名前を一括して変更する方法とは?

このQ&Aのポイント
  • 大量のファイルの名前を一括で変更する方法について解説します。ファイル名の変更作業を手作業で行うと時間がかかるため、効率的な方法を紹介します。
  • 本のデータベースをcsvファイルに落とした際、ファイル名の形式が特定の規則になっている場合、一括で変更することが可能です。具体的な変更方法について解説します。
  • Windows 10を使用している場合、Excelなどのオフィス製品を利用することで、大量のファイル名を一括で変更できます。ファイルの規則性や数値部分の任意性に対応する方法も紹介します。
回答を見る
  • ベストアンサー

大量のファイルの名前を一括して変更する

本のデータベースをcsvファイルに落としました。データ数は1000件です。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・m123456789123456780.jpg・m023456789123456789.jpg 2・世界史・m123456780123456789.jpg・空白 3・神学論・m123406789123456789.jpg・m123456789123056789.jpg これを以下の仕様に変更したいのです。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・1-1.jpg・1-2.jpg 2・世界史・2-1.jpg・空白 3・神学論・3-1.jpg・3-2.jpg jpgファイルは約1200個で専用フォルダに入っていますが、ファイル名に「m123456789123456789.jpg」の規則性があるものの、数値部分が任意です。 win10を使っています。エクセル等のオフィス製品はあります。 よろしくお願い致します。

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

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.8

失礼しました。 「VBScript」による回答ですので「Windows限定」です。 このプログラムは、5行目の f = "D:\Programming\csv_00\Rename\" に存在するフォルダ内の「~.jpg」ファイルを、「csv」ファイルに基づいて変更します。 ただ、単純に「m123456789123456780.jpg」→「1-1.jpg」、「m023456789123456789.jpg」→「1-2.jpg」、・・・という処理をしているだけで、「日本史」のデータは無視してします(「連番」は利用しています)。 今は、「~.jpg」ファイルと「~.csv」ファイルは同じフォルダ内、という想定ですが、適当に質問者の環境に合わせてください。 以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。 「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。 できたプログラムファイルを、質問者の環境に合わせてから、ダブルクリック(「シングルクリック」→「Enter」の方が確実)するだけです。 最後に「Finished!」と表示しますので、「OK」を押して、終了してください。 Option Explicit Dim a, cv, f, gf, i, m, so, x Set so = CreateObject("Scripting.FileSystemObject") gf = so.GetParentFolderName(WScript.ScriptFullName) f = "D:\Programming\csv_00\Rename\" Set cv = so.OpenTextFile(f & "\Rename.csv", 1) x = cv.ReadLine Do Until cv.AtEndOfStream a = Split(cv.ReadLine, ",") For i = 2 to UBound(a) If so.FileExists(a(i)) = True Then Set m = so.GetFile(gf & "\" & a(i)) m.Name = a(0) & "_" & CStr(i - 1) & ".jpg" Set m = Nothing End If Next Loop cv.Close Set cv = Nothing Set so = Nothing MsgBox("Finished!") 5行目の「f = "D:\Programming\csv_00\Rename\"」を、「~.jpg」が存在するフォルダですので、質問者の環境に合わせてください。 Set cv = so.OpenTextFile(f & "\Rename.csv", 1) 今は、「~.jpg」ファイルが存在するフォルダ内の「Rename.csv」ファイルを読み込み専用に開いています。 こちらも「"D:\Programming\~.cvs"」などと、質問者の環境に合わせてください。 7行目の「x = cv.ReadLine」は、1行目が項目行という想定なので、1行読み飛ばしています。 もし、項目行が存在しない場合は、この行を削除してください。 実際のデータは 連番,書名,画像1ファイル名,画像2ファイル名 1,日本史,m123456789123456780.jpg,m023456789123456789.jpg 2,世界史,m123456780123456789.jpg, 3,神学論,m123406789123456789.jpg,m123456789123056789.jpg という形であることを想定していますが、横にもっと「~.jpg」が増えても、問題なく「3-3.jpg」、「3-4.jpg」、・・・などと処理します。

lock_on
質問者

お礼

友人にプログラムに詳しいものがおり、手伝ってくれました。キーボードマクロを使ってバッチファイルを作りました。望む結果が得られました。 丁寧な回答に感謝です。 ありがとうございました

その他の回答 (8)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.7

「VBScript」による回答です。 エクセルは全く使っていません。 このプログラムは、これから処理したい「csv」ファイルを1つだけ、プログラムファイルにドラッグ&ドロップすると、ドラッグ&ドロップした「csv」ファイルと同じフォルダに、たとえば「abc.csv」という名前のファイルをドラッグ&ドロップした場合、「abc(Result).csv」という結果ファイルを作成します。 なお、1行目はタイトル行という想定ですが、1行目からデータの場合は、13行目と14行目の x = cv.ReadLine cr.WriteLine x を、削除してください。 また、列は4列限定で作成してしまっています。 以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。 「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。 できたプログラムファイル(「~.vbs」ファイル)に、これから処理したい「csv」ファイルを1つだけ、ドラッグ&ドロップするだけです。 最後に「Finished!」と表示しますので、「OK」を押して、終了してください。 Option Explicit Dim a, cr, cv, e, f, i, n, so, wa, x Set so = CreateObject("Scripting.FileSystemObject") Set wa = WScript.Arguments If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "csv" Then MsgBox("ドラッグ&ドロップできるのは、csvファイル1つだけです") WScript.Quit End If f = so.GetParentFolderName(wa(0)) n = so.GetBaseName(wa(0)) Set cv = so.OpenTextFile(wa(0), 1) Set cr = so.OpenTextFile(f & "\" & n & "(Result).csv", 2, True) x = cv.ReadLine cr.WriteLine x Do Until cv.AtEndOfStream a = Split(cv.ReadLine, ",") For i = 2 to 3 If a(i) <> "" Then e = so.GetExtensionName(a(i)) a(i) = a(0) & "-" & CStr(i - 1) & "." & e End If Next cr.WriteLine Join(a, ",") Loop cv.Close cr.Close Set cv = Nothing Set cr = Nothing Set wa = Nothing Set so = Nothing MsgBox("Finished!") 説明が、必要でしたら、言ってください。

lock_on
質問者

お礼

私が理解できていないのかもしれませが。 最終的な目的は「別フォルダにあるjpgファイルの名前を変更すること」です。csvファイルをつくることではありません。 回答は質問に合致していますでしょうか?ありがとうございます。

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.6

>その方面は全くダメです。 それは残念ですね。 では、希望の機能を作って貰うと良いと思います。 簡単なんで個人の人なら5000円もしないでやってくれる人もいると思いますよ。

lock_on
質問者

お礼

ありがとうございます。

  • NuboChan
  • ベストアンサー率47% (745/1582)
回答No.5

>以下、2列目以下に式をコピペする。 失礼しました。  以下に訂正します。   以下、2行目以下に式をコピペする。

lock_on
質問者

お礼

ありがとうございました。

  • NuboChan
  • ベストアンサー率47% (745/1582)
回答No.4

Nobu-Wさんの数式を真似して  実際、作ってみました。 CSVをEXCELに読み込んで  D,Fに列を挿入して式を入力    =if(c1="","",ROW()&"-1.jpg) =if(E1="","",ROW()&"-2.jpg)  以下、2列目以下に式をコピペする。 Sheet2に式を作成    =Sheet2!C1 =Sheet2!D1 以下、2列目以下に式をコピペする。 Sheet3に式を作成    =Sheet3!E1 =Sheet2!F1 以下、2列目以下に式をコピペする。 不必要な行がある場合(0の場合)は、行を削除 これで作成されたリストで先に記載したURL   『複数のファイル名をそれぞれ別のファイル名に一括変換する方法』 が利用できる、。 ------------------------ 参考画像    https://imgur.com/d91AYmM

lock_on
質問者

お礼

ありがとうございました。

  • Nobu-W
  • ベストアンサー率39% (725/1832)
回答No.3

はじめのCSVのデ~タをエクセルに取り込んで、そのデ~タシ~ト名がSheet1 だったとして・・・sheet2で作業・・・ sheet2のA1のセルに『=IF(Sheet1!A1="","",Sheet1!A1)』として sheet2のA2のセルに『=IF(Sheet1!B1="","",Sheet1!B1)』 sheet2のA3のセルに『=IF(Sheet1!C1="","",ROW()&"-1.jpg")』 sheet2のA4のセルに『=IF(Sheet1!D1="","",ROW()&"-2.jpg")』 でもって、そのsheet2のA1セルからA4セルをコピ~して、下に必要な行数分 ペ~ストします Sheet2が完成したら、Sheet2のデ~タを全部選択して、コピ~します それを、Sheet3のA1セルでマウス右クリック、『形式を選択して貼り付け』 で値を選択すると・・・値として貼り付けが完了しますので・・・ これをCSVで保存!  使えないですか? 注意なんですが ROWコマンドは行数を拾うコマンドなので、欠番があれば使えないです

lock_on
質問者

お礼

新旧ファイル名の対応表(テーブル)をつくる手順ですね? ありがとうございました

  • NuboChan
  • ベストアンサー率47% (745/1582)
回答No.2

質問の意味が良くわからないが、 つまり、  m123456789123456780.jpg を変名して 1-1.jpeg  m023456789123456789.jpg を変名して 1-2.jpeg にしたいとの事ですよね? >m123456789123456789.jpgの規則性があるものの、数値部分が任意です。 jpegファイルの規則性と言っても  先頭がm  文字数が19 だけで  18桁の数値に規則性が無いのでは、そのものズバリを変換するのは無理があります。 ターゲットのCSVファイルをEXCEに読み込ませて数式を利用して  ターゲットファイル名を変換ファイル名にするリストを作成する必要があります。  同じ行(行番号=1)にm123456789123456780.jpgの隣に仮セルを挿入して数式で1-1.jpeg等を作成するのがキモになります。   1行出来れば後は、下部へ数式をコピペ。 それさえ出来れば、下記が利用できます。  複数のファイル名をそれぞれ別のファイル名に一括変換する方法  https://discommunication.info/log/2017/06/07/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E3%81%9D%E3%82%8C%E3%81%9E%E3%82%8C%E5%88%A5%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AB%E4%B8%80%E6%8B%AC%E5%A4%89%E6%8F%9B/ 私は、EXCELマスターでは無いので他の人に頼んだほうが解決は早いです。   ROW,COLUMN関数を使ったIF文かな ?

lock_on
質問者

お礼

回答は元のファイル名と変換したいファイル名の対応表(テーブル)をエクセルで作り、テーブルを利用してマクロでファイル名を変換するということですね? かなり難しそうです。 ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ファイルの名前を一括変更 1.2という無料ソフトをダウンロードして変換するのがお勧めです。 https://www.vector.co.jp/download/file/winnt/util/fh666807.html

lock_on
質問者

お礼

例えば、 1・日本史・m123456789123456780.jpg・m023456789123456789.jpg m123456789123456780.jpg → 1-1.jpg m023456789123456789.jpg → 1-2.jpg 以上のような関係性を維持したまま【別のフォルダ内にあるjpgの】ファイル名を変更します。 ありがとうございました。

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.1

自分でスクリプト書いて対応するしかなさそうな内容ですね。 Excelである必要はないですが、CSVファイルを表で開いて、列ごとにコピペできるものがあると良いですね。 openOfficeかなんかで良いでしょう。 コピペを組み合わせて、コマンドブロンプトでのファイル名変更するバッチファイルを作成したら、必要な知識はかなり少ない。 https://www.adminweb.jp/command/file/index3.html こういうコマンドがCSVのデータの件数並んだファイルを作ったら良いですね。 ミスすることも考えて、変更前のファイルのバックアップも取っておきましょう。 バッチについてはこの辺ですね。 https://qiita.com/sawa_tsuka/items/4703a9743777d4ea30de

lock_on
質問者

お礼

その方面は全くダメです。 ありがとうございました。

関連するQ&A

  • ファイル名を関連性を維持しつつ変更する

    本のデータベースをcsvファイルに落としました。データ数は1000件です。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・abc.jpg・xyz.jpg 2・世界史・opq.jpg・空白 3・神学論・abx.jpg・axz.jpg ※jpgファイル名に規則性がない これを以下の仕様に変更したいのです。 ↓csvの形式 連番・書名・画像1ファイル名・画像2ファイル名 1・日本史・1-1.jpg・1-2.jpg 2・世界史・2-1.jpg・空白 3・神学論・3-1.jpg・3-2.jpg win10とエクセルです。 よろしくお願い致します。

  • ファイル名の空白を一括で削除したい

    ファイルをアップロードする為にファイル名に含まれている空白を削除したいのです。 例:123 456.jpg → 123456.jpg ファイルが少なければ手作業で空白を詰めればいいのですがファイルが数百点あるので一括で処理できればありがたいのです。 また、ファイル名に含まれる文字列は規則性がなく連番処理やオートコンプリート機能ができずに苦慮しています。 ファイル名を一括で変換するフリーソフトは多数見つけたのですが、ファイル名に含まれる空白を一括で削除するソフトは見つけれませんでした。 どなたかいいフリーソフトをご存知ないでしょうか? フリーソフトを使わなくてもいい方法があればお教え下さい。 ただし、PCにはあまり詳しくないので高度な関数やスクリプトを使用する方法には対応する自信がありません。 なるべく簡単にできると嬉しいのですが・・・。 よろしくお願いします。

  • フォルダ内のファイル名を一括変更したい

    windows10を使っています。 指定したフォルダ内のファイル名を一括変更したいです。 具体的には、以下のようにファイル名内の空白を「_」に置換したいです。 変更前:スクリーンショット 2021-01-01 104535.jpg ↓ 変更後:スクリーンショット_2021-01-01_104535.jpg バッチファイルで手軽に実行できるとうれしいです。 やりたいことの具体例: 空白置換.batを実行したら、空白置換.batが置いてあるフォルダ内のファイル名が一括変更できる。 空白置換.bat内で、変更対象とする拡張子を指定できる。 よろしくお願いいたします。

  • ファイル名変更で、異常症状(ファイル消失!)、バグでしょうか?

    jpgファイル複数を連番により同一名を付そうとしました。解説では、当該ファイルをすべて選択し、一つのファイル名を変更すると(1)(2)…の連番が付くそうです。 さかな.jpg ほか複数のファイルを選択、一つをサカナ.jpg と変更すると、たしかにサカナ.jpg サカナ(2).jpg サカナ(3).jpg サカナ(4).jpg サカナ(5).jpg …と、連番ファイル変更となりました。ここでファイル名を別の文字にと思い、 整理→元にもどす を実行したのです。元のファイル名に戻りました。でもやはり、変更したファイル名でいいか、と考え直し今度は、 整理→やりなおし を実行したのです。 サカナ.jpg の一枚は残りましたが、あとのjpgファイルは、瞬時に焼失しました。マズイ操作をしたのでしょうか。それともビスタのバグでしょうか。

  • ファイル名を、リストの名前で一括変換したいのです。

    こんにちは。 デジカメで撮ったjpegを納めたフォルダがあります。 その中で採用するファイルのみ抜粋し、リネームしたいのですが、 連番などではなく、こちらで用意をしたファイル名のリスト(csvやtxt)で順に 一括変換したいのですが、良いソフトはありますでしょうか。 よろしくお願いいたします。

  • 名前を付けて画像を保存がファイルになる。

    右クリックで名前を付けて画像を保存したら、 今まではJPGで保存できていたものが(自分のブログにアップしたJPG画像が) ファイル形式やテキスト形式になってしまします。 その前にビートマップ形式でしか保存が出来なかったので 一時インターネット ファイルのキャッシュがいっぱいになっている場合 の処理を一通りしました。 その後に上の症状になってしまいました。 しかも「名前を付けて画像を保存」にしたときにファイル名もちゃんと出て、ファイルの種類もちゃんとJPGになっているのに、 マイドキュメントのマイピクチャーをみたら、 ファイル形式やテキスト形式で保存になってしまって、画像が見れません。 どうすればいいでしょうか?

  • 大量のファイル名を自動変更したい

    お世話になります。 画像ファイルが大量にあります。 これを拡張子はそのままに 風景写真001.jpg 風景写真002.jpg 風景写真003.jpg などとシーケンシャルなファイル名に変更したいのですが、 そのような方法がありますか? よろしくお願いします。

  • IrvineでDLしたファイルをファイル名を指定して保存する方法

    宜しくお願いします。 irvineを使って画像を一括してDLしたいのですが、その画像のファイル名が全て『a.jpg』となっています。 ・データはcsvを使用しています ・画像の場所はcsvのセル(エクセル使用)にurlで記述されています ・その画像(商品なんですが)のIDが有るので、これを画像のファイル名にしたいのです 例えば、ID→「1234」の場合、ダウンロードするファイルは「a.jpg」ですが、保存するファイル名を「1234.jpg」という風にしたいのです。 どなたか、ご存知の方いらしたらどうか教えて下さい。 宜しくお願いいたします。

  • 連番ファイル名を変更したい

    こんにちは、いつもお世話になります。 フォルダー内に「pic0001.jpg~pic0025.jpg」のファイルがあり これを「pic0068.jpg~pic0093.jpg」のように 連番ファイル名を変更することってできますか? 少ない時は一つずつ手作業でやっていたのですが たくさんあると大変な作業になりまして、 なにか良い方法はありますでしょうか? よろしくお願いします。

  • ファイル名を連番にするフリーソフト

    数字を連番にしてくれるフリーソフトは、 沢山あるのですが、私が探しているフリーソフトは、 元のファイル名が、 05-Camp-01~05-Camp-10と言う名前のjpegデータがあるとします。 その10個のjpegファイルをドラッグするだけで、 05-Camp-01a.jpg~05-Camp-10j.jpg と言う風に、ファイル名の後にアルファベットの連番と拡張子をa.jpg~z.jpgと言う形式に変えてくれるソフトを探しています。 ご存知の方、おられましたら宜しくお願いいたします。

専門家に質問してみよう