• 締切済み

フォルダ名を変更するプログラム

「変換前」というフォルダに200ほどのPDFファイルがあります。 フォイル名はダウンロードした日時によってランダムに数字が並びますが、 必ずその一部に100種類の英語が含まれています。 その英語、100種類はすでにわかっています。 そのフォルダ内のPDFの英語のみ残した状態でファイル名をつけたいです。 一気に作業する方法はございませんか?(VBSなど…全く知識がなく) ◼︎変換前 (フォルダ) 005725ABC57915.pdf 173596DEF56975.pdf 353986GHI56885.pdf ◼︎変換後 (フォルダ) ABC.pdf DEF.pdf GHI.pdf このようにいっぺんに変換したいです。 ファイル名の一部にABCとつくファイルを見つけ出し、 ABCというファイル名に変更する…という手順に なるのでしょうか?知識なく…困っております。 どなたか初心者でもわかるように教えていただけるとありがたいです。 よろしくお願い申し上げます。

みんなの回答

回答No.2

出来はいまいち(さん?)ですが・・・。 下記コードをメモ帳などにコピペッタンして拡張子をVBSで保存してください。 保存先はあなたの『変換前』フォルダです。 返還前_new フォルダに掃除の終わったファイルが保存されます。 アルファベット52文字だけを抜き出しています。 もし掃除が終わった時にファイル名が重複する場合は連番を振っています。 返還前フォルダ中にサブフォルダがあっても処理していません。 Dim oSh, oFs Dim fFrom, fN Dim fTo, fNto, fTmp, fTmp2 Dim i, j Set oFs = CreateObject("scripting.filesystemobject") Set oSh = CreateObject("Wscript.Shell") Set fFrom = oFs.GetFolder(oSh.currentDirectory) If oFs.FolderExists(fFrom & "_new") = False Then oFs.CreateFolder fFrom & "_new" End If For Each fN In fFrom.Files fNto = "" If oFs.GetExtensionName(fN) = "pdf" Then fTmp = oFs.GetBaseName(fN) For i = 1 To Len(fTmp) If InStr(1, "abcdefghijklmnopqrstuvwxyz", Mid(fTmp, i, 1), vbTextCompare) > 0 Then fNto = fNto & Mid(fTmp, i, 1) End If Next fTmp2 = fNto j = 0 Do Until oFs.FileExists(fFrom & "_new" & "\" & fTmp2 & ".pdf") = False j = j + 1 fTmp2 = fNto & j Loop oFs.CopyFile fN, fFrom & "_new" & "\" & fTmp2 & ".pdf" End If Next MsgBox "終了しました"

yuki1222kzm
質問者

お礼

ありがとうございました。 トライしてみます!

  • sora1515
  • ベストアンサー率58% (54/92)
回答No.1

質問そのままぐぐったら答え出ますね・・・ と書こうとしたら質問すら間違えてた罠! こちらをどうぞ。 ファイル名一括変更 http://www.vector.co.jp/soft/win95/util/se241103.html ヘルプ→正規表現の使用例→数字部分のみ取り出し→\d+ とやさしい解説もありました。

yuki1222kzm
質問者

お礼

早速ありがとうございます。 社内セキュリティー上ダウンロードができないもので… 自作できる方法はないものでしょうか。 すみません。。。。

関連するQ&A

  • ファイル名変更(フォルダ名を前置きする)

    複数のフォルダにあるファイルのファイル名を、そのフォルダ名を前置きしたファイル名にリネームする方法はありませんか。 OSは7で、コマンドプロンプトからrenコマンドでできないか試したのですが思うようになりません。 行いたい作業例ですが、 ABCというフォルダ内にファイルがある場合、 1)001.txt → ABC001-00.txt 2)001-1.txt → ABC001-01.txt 3)001-11.txt → ABC001-11.txt 4)001-A.txt → ABC001-A.txt にしたいです。 1)~4)はルールことに分けて作業でもいいのですが、フォルダは複数あるため、一階層上から作業できる方がいいです。 AAAというフォルダ下に先のABCというフォルダ以外にDEFやGHIといったフォルダがあり、その下に001.txtや001-1.txtというフォルダがあるということです。 よろしくお願いします。

  • PHPで、フォルダーにあるファイルを配列に取り込みたい

    例えば次の様なフォルダーとファイルがあるとき \abc\a.txt \abc\b.doc \abc\def\b.doc \abc\ghi\a.txt \abc\ghi\b.doc 次の様な結果を得たいのですが、どうすれば良いでしょうか? $dir[/abc/a.txt] = "/abc/a.txt" $dir[/abc/b.doc] = "/abc/b.doc" $dir[/abc/def/b.doc] = "/abc/def/b.doc" $dir[/abc/ghi/a.txt] = "/abc/ghi/a.txt" $dir[/abc/ghi/b.doc] = "/abc/ghi/b.doc" 再帰関数でできそうに思うのですが、いくら考えても分かりません。 $path = "\abc"; function getfiles($path) {} print_r(getfiles($path)); みたいにして取り出せると助かります。 すみませんが教えてください。

    • ベストアンサー
    • PHP
  • VBSのADODB.Streamで先頭に「追記」

    こんにちは、 VBSのADODB.Streamでファイルを操作しています。 単純なことですが、どうしたらよいか、わからないことがあります。 test.txt の中身は abc def ghi となっています。 これを 123 abc def ghi のように変更したいのです。 ファイルの内容をいったんすべて読み込んで、Position = 0にして、123を書き込んで、読み込んだ残りを書き込めばよいのですが、ファイルのサイズが大きくなるとかなり無駄のように思います。 もっとスマートに、先頭に書き込んで、「書き込んだ分だけ残りは後ろに押し出される」・・・みたいな命令はできないのでしょうか? できなければバッチファイルで処理しようかと思っています。

  • UNIXでfindとls

    UNIXでファイルを検索するのにfindコマンドを使用してますが 情報として、パス名だけが表示されます。 >find . -name ghi -print ./ghi ./abc/def/ghi ./abc/def/ghi/ghi これを、ファイルのいろんな情報を見ることはできないでしょうか? パイプを使おうと思ったのですが、いまいちわかってなくて できませんでした。

  • dosでサイズを比較して異なるファイルだけコピー

    dosで全フォルダ内のファイルサイズを比較して異なるファイルだけコピーしたい 次のようなファイル構成で AAAフィルダ    BBBフォルダ  cccフォルダ    cccフォルダ   abc.txt      abc.txt   def.jpg      def.jpg  dddフォルダ    dddフォルダ   ghi.txt      ghi.txt   jkl.jpg      jkl.jpg AAA\ccc\abc.txtとBBB\ccc\abc.txt AAA\ccc\def.jpgとBBB\ccc\def.jpg AAA\ddd\ghi.txtとBBB\ddd\ghi.txt AAA\ddd\jkl.jpgとBBB\ddd\jkl.jpg 拡張子は問わずそれぞれに対するファイルのファイルサイズを比較して 大きくても小さくても異なるファイルだけbbbフォルダ内に上書きコピー したくご教授をお願いします

  • リストを読み込んでファイル名を書換るバッチファイル

    バッチファイル(test.bat)で、 変更前のファイル名が1行に1つずつ書かれたテキストファイル1(no1.txt)と 変更後のファイル名が1行に1つずつ書かれたテキストファイル2(no2.txt) を読み込んで、 no1.txtのn行目のファイル名のファイルを、 no2.txtのn行目のファイル名に書き換える バッチファイルを作りたいのですが、 (n=1,2,3,4…行数) どのように記述すればよいでしょうか。 具体的には、 フォルダAに 123.txt 456.txt 789.txt というファイルが入っていたとして、 no1.txtのファイルには、 123.txt 456.txt 789.txt no2.txtのファイルには、 ABC.txt DEF.txt GHI.txt が書かれていて、 test.batを実行すると、 フォルダAの中のファイル名が 123.txt => ABC.txt 456.txt => DEF.txt 789.txt => GHI.txt というようにリネームされるようにしたいです。 よろしくお願いします。(Windows10)

  • Windows で ワイルドカード的検索

    Windouw Vista を使っています。 たとえば、あるフォルダー内に abc_taro_2233.txt abc_jiro_5543.txt abc_hanako_6332.txt def_taro_5566.txt ghi_jiro_4455.txt ghi_hanako_2211.txt ppp_taro_6666.txt というファイルがある時、ファイル名の中に、taro という文字列を含むファイルだけを 表示する方法はありますか? よろしくお願いします。

  • 一括でフォルダと同じ名前にファイルをリネームしたい

    一括でフォルダと同じ名前にファイルをリネームしたいです。 数百とあるフォルダの中に、PDFがそれぞれ1ファイルずつ入っています。 フォルダとファイルは同じ名前ではなく、また連番でもありません。 これをたとえば下の例のように、「東京」フォルダにある「abc123.pdf」をフォルダと同じ名前+拡張子の「東京.pdf」にしたいとき、一括で数百とあるファイルをリネームする方法はありますでしょうか。 調べたのですが、自力ではわからなかったため、質問させて頂きました。どうかよろしくお願いします。 使用OSはXPです。 例) 東京 ┗abc123.pdf 埼玉 ┗def456.pdf    ↓ 東京 ┗東京.pdf 埼玉 ┗埼玉.pdf

  • windowsフォルダのマウント(フォルダをフォルダに)

    あるフォルダ(仮に、c:\abc)を作成します。 このABCという領域にどこかのフォルダ(仮にc:\def)をマウント?のようにできないでしょうか? 例えば、c:\abcはただの空のフォルダで、実質ここのフォルダ下に保存されるファイルはc:\defに保存されるようにしたいのです。 1つのドライブにフォルダまるごとマウントというのは管理ツールでマウントできるとは知っているのですが、 よろしくお願いします。

  • perlでのcsv形式のテキストファイルの変換

    perlを使用してcsv形式のテキストファイルを下記のように変換したいと思っています。 【変換前】 10, abc , def , ghi ,jkl    ----1行目 10, abc , def , aaa, bbb   ----2行目 10, abc , def , ccc , ddd  ----3行目 11, abc , def , eee , fff   ----4行目 11, abc , def , aaa , ggg ----5行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 【変換後】 10, abc , def , ghi ,jkl    ----1行目 11, abc , def , eee , fff   ----4行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 変換内容はcsv形式のテキストファイルで、”,”で区切った先頭3列が 前の行の先頭3列と同じならその行は出力しない、といった 変換をしたいと思っております。 (例えば2行目ですと先頭3列は10, abc ,defになっており、  1行目の先頭3列と同じ文字列になっているためこの行は出力しない) 当方、Perl初心者で上記のようなことがPerlでできるかも よくわかっておりません。 そこで、上記のような変換はPerlで可能なのか、そしてもし可能であるのなら どのようにPerlで記述すればできるのか教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl