- ベストアンサー
サブディレクトリ以下のファイルとフォルダを抽出
著者名フォルダの中に作品書籍名フォルダがあります。著者名フォルダにはサブフォルダのみでファイルはありません。 作品書籍名フォルダには実データファイルがあるようなディレクトリ構造になっています。作品書籍名フォルダとその中身だけ抽出したいのですがどうすればよいでしょうか? 著者名フォルダという親フォルダを廃止するイメージです。ちなみに200件ほどあります。 よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No5の訂正です。 No5だと一つの著者名フォルダだけしか対応できませんでした。 紹介したサイトと以下のサイトを参考にして https://win.just4fun.biz/?WSH/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%B8%80%E8%A6%A7%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%83%BBFiles%2C+Folders "C:\著者名フォルダの一つ上のフォルダ" は たとえば C:\nanigasika\著者名フォルダ\作品書籍名フォルダ という構造でしたら strSrcFolder = "C:\nanigasika" にしてください。 C:\nanigasikaの中にある全てのフォルダ(著者名フォルダ)のサブフォルダ(作品書籍名フォルダ)を全てコピー先フォルダにコピーします。作品書籍名フォルダの重複は考えていません。 On Error Resume Next Dim objFSO ' FileSystemObject Dim strSrcFolder ' コピー元フォルダ名 Dim strDstFolder ' コピー先フォルダ名 strSrcFolder = "C:\著者名フォルダの一つ上のフォルダ" strDstFolder = "C:\コピー先のフォルダ" Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set fld = objFSO.GetFolder(strSrcFolder) ' Get Folder Object Set fdcol = fld.SubFolders ' Get Folders Collection If Err.Number = 0 Then ' コピー先フォルダが存在しないときは作成する If objFSO.FolderExists(strDstFolder) <> True Then objFSO.CreateFolder(strDstFolder) End If For Each f in fdcol ' フォルダコピー objFSO.CopyFolder strSrcFolder & "\" & f.name & "\*" , strDstFolder, True If Err.Number = 0 Then WScript.Echo strSrcFolder & " を " & _ strDstFolder & " にコピーしました。" Else WScript.Echo "エラー: " & Err.Description End If Next Else WScript.Echo "エラー1: " & Err.Description End If Set fdcol = Nothing Set fld = Nothing Set objFSO = Nothing
その他の回答 (5)
- kkkkkm
- ベストアンサー率66% (1733/2603)
[フォルダをコピーする] http://www.whitire.com/vbs/tips0079.html 上記のサイトを参考にして strSrcFolder = "C:\T*" strDstFolder = "C:\Work" の部分を 著者名フォルダ、ピー先のフォルダともにCドライブのすぐ下にある場合(違う場合フォルダのフルパスを記載してください) strSrcFolder ="C:\著者名フォルダ\*" strDstFolder = "C:\コピー先のフォルダ" として実行してください。
- msMike
- ベストアンサー率20% (364/1805)
[No.2お礼]ヘのコメント、 ≫ かなりの数があるんです。200件ならいいかと思って┅ さう云ふことは最初に云ふべき!
- m5048172715
- ベストアンサー率16% (860/5261)
ファイル数は約千か。手作業ではだめだな。そうすると、フルパスをファイル名にしてしまったらどうか?例えば、 c:\aaa\bb\cccc.ddd というファイルを、 d:\まとめ\aaa_bb_ccc.ddd とコピーすれば、ディレクトリ構造をファイル名に含めるので、ファイル名の重複や上書きにはならない。 実際には、そうコピーするバッチファイルを、リダイレクション機能やエクセル等計算表ソフトウエアを使って作ることになる。
- msMike
- ベストアンサー率20% (364/1805)
イトもカンタンです。 [作品書籍名フォルダ]をマウスでドラッグして、[著者名フォルダ]の[親フォルダ]にドロップ。 すると當該[親フォルダ]配下に、移動された[作品書籍名フォルダ](中身も元の儘!)と空になった[著者名フォルダ]が併存することになります。 必要なら、其処で[著者名フォルダ]を削除すれば好いのです。 「移動」先は[著者名フォルダ]以外のお好みのフォルダで構ひません。
お礼
いや、そうなんですけどかなりの数があるんです。200件ならいいかと思ってWinmergeソフトを使ってポチポチやりましたが面倒でした。自動だと元のフォルダ構造を完全に保持してしまうので、コピー先に書籍名フォルダだけでなく著者名フォルダもコピーされてしまいました。 それと200件程度だと思っていましたが1000件はありました。ですのでできれば自動でやってほしいのです。
- m5048172715
- ベストアンサー率16% (860/5261)
たしかzcopyでできていたな。試すなら、 https://www.vcraft.jp/soft/zcopy.html をgather指定でやってみる。
お礼
サブフォルダの構造を全く無視してファイルだけ抜き出すので、ファイル名の重複があるとすべてを保持してくれません。残念ながらうまくいきませんでした。 ありがとうございました。
お礼
素晴らしい!2/3は何故かコピーされませんでしたが、残りはうまくいきました。パスが見つかりません、というエラーがいくつも出ました。が2/3すべてにそれが出たわけでもなく(かなり少なかったです)、もう少し分析する必要があります。アルファベットと特殊文字のみで、漢字はフォルダ名とファイル名には含まれていませんが、嫌われた特殊文字があるのかもしれません。[とか(とかですね。 メッセージ内の句読点のマルが気に入られなかったのと、コピーされるたびに成功メッセージが出ることだけは修正しました。 ありがとうございました。