• ベストアンサー

階層の多数あるフォルダの統合

gennyaの回答

  • gennya
  • ベストアンサー率15% (18/120)
回答No.3

質問内容は以下であっていますか? フォルダA以下の全フォルダを調べる 5桁以下の数字のフォルダの全ファイルをコピー コピーしたファイルをファルダUにペースト 同じファイル名があった場合、ファイル名をカッコ付き連番とする 質問事項は、以下のどれなのでしょうね? 個人的に便利なプログラムを作りたい 会社で業務に使いたい 学校での宿題 など

sushidokei
質問者

お礼

仰せの通りです。業務より個人的に便利なプログラムを作りたい>>に該当します 当方、診療所を経営するものでして、患者さんのカルテ番号が、フォルダ5桁の番号でjpgはカルテです。camscannerに、ばらば保存していたものを統合したいです。

Powered by GRATICA
sushidokei
質問者

補足

御礼に書きましたことの修正です camscannerというストレージサービスに保存すると、ダウンロードしたときに日付フォルダなどで多層階層のフォルダになってダウンロードされてしまいます そこで ばらばらのIDフォルダをひとつのフォルダに統合したい、という主旨で御座います。 https://okwave.jp/qa/q10254036.html こちらでも御回答を多数 頂きましたが 残念ながら うなく稼働しませんでした ちなみにchatGPTで以下のコードが出来ましたが、やはりうまくいきません どこに問題があるでしょうか?---すみません Sub フォルダを統合する() Dim 元のフォルダ As String Dim 統合先フォルダ As String Dim FSO As Object Dim 元のフォルダ内のフォルダ As Object Dim 元のフォルダ内のファイル As Object Dim 対象フォルダ As Object Dim 新しいフォルダ名 As String Dim 新しいファイル名 As String Dim i As Integer ' 元のフォルダと統合先フォルダのパスを指定します 元のフォルダ = "C:\A" ' ご自身のフォルダパスに置き換えてください 統合先フォルダ = "C:\U" ' ご自身のフォルダパスに置き換えてください ' FileSystemObjectを作成します Set FSO = CreateObject("Scripting.FileSystemObject") ' 統合先フォルダが存在しない場合は、作成します If Not FSO.FolderExists(統合先フォルダ) Then FSO.CreateFolder (統合先フォルダ) End If ' 元のフォルダ内のすべてのフォルダを探索します Set 元のフォルダ内のフォルダ = FSO.GetFolder(元のフォルダ).SubFolders For Each 対象フォルダ In 元のフォルダ内のフォルダ ' フォルダ名が5桁以下の場合のみ処理します If Len(対象フォルダ.Name) <= 5 Then ' 同名のフォルダが存在する場合は、新しい名前でフォルダを作成します If FSO.FolderExists(統合先フォルダ & "\" & 対象フォルダ.Name) Then i = 1 Do While FSO.FolderExists(統合先フォルダ & "\" & 対象フォルダ.Name & " (" & i & ")") i = i + 1 Loop 新しいフォルダ名 = 対象フォルダ.Name & " (" & i & ")" Else 新しいフォルダ名 = 対象フォルダ.Name End If ' 新しいフォルダを作成します FSO.CreateFolder (統合先フォルダ & "\" & 新しいフォルダ名) ' フォルダ内のファイルをコピーします For Each 元のフォルダ内のファイル In 対象フォルダ.Files 新しいファイル名 = Replace(元のフォルダ内のファイル.Name, 対象フォルダ.Name, 新しいフォルダ名) 元のフォルダ内のファイル.Copy 統合先フォルダ & "\" & 新しいフォルダ名 & "\" & 新しいファイル名 Next 元のフォルダ内のファイル End If Next 対象フォルダ ' メッセージを表示します MsgBox "フォルダの統合が完了しました。", vbInformation End Sub

関連するQ&A

  • 全てのjpgファイルを一つ上の階層に移動したいです

    ネットワークカメラの設定で年月日時分秒を利用してjpgファイルが 以下の様にUPされます。 ./www/hoge/20160309/19/194512_1.jpg ./www/hoge/20160309/19/194512_2.jpg ./www/hoge/20160309/20/203317_1.jpg ./www/hoge/20160309/21/214055_1.jpg ./www/hoge/20160310/07/070503_1.jpg ./www/hoge/20160310/07/082235_1.jpg 時間だけを表している2桁数字のフォルダが邪魔なので、jpgファイル 全てを一括で一階層上の年月日8桁の数字フォルダ内に移動するには、 どのように記述すれば良いかご教示お願いします。 ネットワークカメラは24時間作動しているので、手動で移動するのは 面倒です。どうぞ宜しくお願いします。

  • 特定ディレクトリ以下の複数のフォルダ名とファイル名を一括で連番にするバッチの作成

    特定のフォルダ(ディレクトリ)以下の複数のフォルダ名とファイル名を 一括で連番にしてくれる方法(連番+拡張子のリネーム)を教えてください。 ソフトでは簡単ですが*.bat ファイルで実行するスクリプトを 知りたいので宜しくお願い致します 例えば フォルダ0 ├フォルダ1 │ ├ a.txt │ ├ b.jpg │ └ フォルダ2 │    └c.exe └ フォルダ3   └ d.exe という構造があったとして 000000 ├000001 │ ├ 000000.txt │ ├ 000001.txt │ └ 000000 │    └000000.txt └ 000002   └ 000000.txt この様に特定ディレクトリ以下の複数のフォルダ名とファイル名を連番 (上記は6桁ですが001,002…など3桁などに対応できる)にしたいのです 以下の方法で特定のフォルダ内のファイルを.txtに変更まではできましたが、 特定のフォルダより下層のファイルを.txtに変更はできませんでした。 REN E:\フォルダ\フォルダ\*.* *.txt 上記のスクリプトは特定フォルダにあるファイルは拡張子の変更が出来ますが、 そのフォルダより下層の複数のフォルダ名とファイル名の拡張子の変更をできないので、 *.batファイルで連番+拡張子のリネームを一括でするスクリプトの明記をお願い致します。 ご存知の方、どの様なご意見でも構いませんので ご回答頂けると幸いです。宜しくお願い致します。

  • 最下層のファイルを一緒の階層に入っているフォルダに自動的に移動させる方

    最下層のファイルを一緒の階層に入っているフォルダに自動的に移動させる方法を教えて下さい。 フォルダ名とファイル名は規則性がないのですが、複数ある場合手動で移動させるのが困難なため、 その方法を知りたいです。 仮に名前が上四桁が一緒の場合もやり方がありましたら教えてください。 使用しているのはAutomatorになります。

  • バッチファイルによるフォルダ名の変更

    バッチファイルによるフォルダ名の変更 あるフォルダに存在する日付(西暦)を名称としたフォルダ、例えば 2010-0530 を、バッチファイルを実行することで、和暦(元号)、例えば H220530 に名前を変え、その後に特定のアプリケーション(Picasa3)を実行したいのです。 インターネット上の情報を参考に、 @echo off cd /d K:\VIDEOPHOTO\H220401から for /d %%f in ( * ) do call :sub "%%f" start C:\"Program Files\Google\Picasa3\Picasa3.exe" exit /b :sub set dirname=%1 set dirname=%dirname:(=【% set dirname=%dirname:)=】% set dirname=%dirname:2010-=H22% ren %1 %dirname% goto :EOF というバッチファイルを作り、概ね希望どおりの結果となったのですが、既に同名のフォルダが存在していた場合(例ではH220530というフォルダが既に存在)、フォルダ名の変更はされずスルーされてしまいます。 既に同名のフォルダが存在していても、フォルダ名を変更(既存フォルダと統合)することはできますでしょうか?

  • バッチファイルで、ファイル名から自動振分したい

     C:\B\の中に、必ず「半角数字4桁_」から始まるファイル名のデータが毎週入ります。  「半角数字4桁_」以後のファイル名、拡張子は、その週によって変わります。  C:\A\の中には、必ず「_半角数字4桁_」で終わるフォルダ名のサブフォルダがあります。  このフォルダ名は、ずっと変わることがありません。  C:\B\の中にあるデータを、ファイル名の最初の4桁の数字をもとに、C:\A\にあるサブフォルダに自動で移動したいです。また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。 フォルダ構成です。 Cー|    |-【A】    |   |-【あいう_1234】    |  |-【あい_2235】    |   |-【かきくけ_8990】    |   |-【アイウエオ_5014】    |    |-【B】    |   |-1234_ABC.txt    ←このファイルは C:\A\【あいう_1234】に。    |  |-2235_1534.txt   ←このファイルは C:\A\【あい_2235】に。    |   |-8990_22.doc     ←このファイルは C:\A\【かきくけ_8990】に。    |   |-5014_わをん.doc   ←このファイルは C:\A\【アイウエオ_5014】に。   自分でバッチファイルを記述してみたのですが、ここからどうしていいか分かりません。  どなたか教えてもらえないでしょうか? よろしくお願いします。    自分で記述してみたバッチファイルです。 cd C:\B dir /b > C:\C\list.txt set folder=C:\A set file=C:\B set Bat=C:\C for /f "delims=" %%a in ( %Bat%\list.txt ) do if exist "%file%\%%a" move "%folder%\%%a" "%to%" PAUSE > NUL

  • サブフォルダ内のファイルを全部移動させたい。

    VBScriptのバッチでの作成を考えています。 あるフォルダ(名をFolderとします)の中に、たくさんのサブフォルダが あって、そこにあるファイルをすべてFolderに移動させたいと 思っています。 (ファイルはjpg画像ファイルだけです。) たとえば、Folderの下に、Folder_Bというサブフォルダがあって、 更にその下にFolder_Cがあり、その中には1.jpgというファイルが あったとしたら、バッチ実行後、Folderの直下に1.jpgがあり、 (可能であれば)フォルダはすべて消えているという具合です。 ファイルの移動自体はファイルシステムオブジェクトのFile.Moveで行い、 最後にディレクトリを列挙して削除していけばいいんだろうなという ところはわかります。 しかし、フォルダをサブフォルダも含めてすべて舐めて、そこから ファイルを移動していくというロジックに悩んでいます。 アドバイスいただけないでしょうか。

  • フォルダの階層が何重にもなっている

    ユーザーフォルダにあるビデオフォルダについて質問です。 曖昧な記憶では、ビデオフォルダを別の場所に移動し、ユーザーフォルダに戻したら発生しました。 OSはVistaを利用しています。 C:\Users\ユーザー名\Videos\Videos\Videos\Videos この場所に動画ファイルがあるようになりました。 C:\Users\ユーザー名\Videos\Videos\Videos に「ビデオ」フォルダがあるような状態です。 (上の画像) C:\Users\ユーザー名 には通常アイコンの「Videos」(C:\Users\ユーザー名\Videos)フォルダと、 デフォルトの緑色のアイコンの「ビデオ」フォルダ(C:\Users\ユーザー名\Videos\Videos\Videos\Videos)の二つがあります。 (下の画像) ビデオフォルダをもとの状態 C:\Users\ユーザー名\Videos に直したいと思います。 できればアイコンも戻したいです。 簡単なファイル操作ならできます。 レジストリをいじるのは不安です。

  • MS-DOSで一定の規則に沿ってフォルダ名を変更しながらコピーする方法は?

    以下のような操作を行いたいのですが、良い方法が思い浮かびません。 思いついた方がいらっしゃったら、ご教示いただければ幸いです。 よろしくお願いします。 【概要】 Aserverのcommonフォルダから3階層下のフォルダに入っているファイルを、 一定の規則に沿ってフォルダ名を変えながら自分のクライアントのcommonフォルダにコピーする。 【詳細】 コピー元:\\Aserver\common\(不規則な名前)\(不規則な名前)\A01234567\*.*  ⇒ A01234567の部分のフォルダ名は、アルファベット1文字+数字6桁または数字8桁。 コピー先:C\:common\A01\A012345\*.*  ⇒ コピー元のA01234567の部分のフォルダ名から、    まず最初のアルファベット+数字2桁を取り出してフォルダを作り、    さらにその中にアルファベット+数字6桁のフォルダを作り、    そのフォルダの中にコピー元のファイルをコピーする。

  • (VBA) 多階層のフォルダーの配置換え

    VBA 多階層のフォルダーを配置換えする 2021/07/13 16:54 以下のような操作をEXCELのVBAで処理可能でしょうか ? --------------------- 例えば、 添付画像のような階層が深いフォルダーの各層の最後に存在している AAABBB,CCC,DDD,EEEの各フォルダーを#testに引き上げる。 ターゲットは、フォルダーでファイルではありません。 1段下層のフォルダーを引き上げるBATなどは検索すれば見つかりますが 階層が深い(多階層)の場合を見つけられませんでした。 (ファイルの場合は少し見つかりましたがフォルダーは見つけられませんでした。) 具体的には O:\#test\AAA O:\#test\#2\BBB O:\#test\#2\#3\CCC O:\#test\#2\#3\DDD O:\#test\#2\#3\#4\EEE を O:\#test\AAA O:\#test\BBB O:\#test\CCC O:\#test\DDD O:\#test\EEE に配置換えする 配置換え後は、O:\#test\#2及#2以降の下層のフォルダーは削除する。 ---------------------

  • Windowsフォルダ内に削除したいフォルダがありますが安全だか教えてください。

    Cドライブがいっぱいになってしまいプログラムの起動にも支障が出るので削除できるファイルを探して削除しています。Program Files内のソフトなども他のドライブに移したり削除などしていますがなかなか容量が増えません。 そこでWindowsフォルダを見てみたのですが、ここに、 $NtUninstallKB810217$ というフォルダが200ぐらいあるのを見つけました。 フォルダの色は薄く、フォルダ名は $NTUninstall以下アルファベット+6桁の数字+$ となっています。 これを削除できると大幅に容量が増えるのですが、削除してもいいフォルダなのでしょうか。 それとも削除してはいけないフォルダなのでしょうか。 どなたかわかる方がいらっしゃいましたら教えてくださいますか? 急いでおります。 どうかよろしくお願い申し上げます。