• ベストアンサー

フォルダ内のファイルを取得し別ディレクトリへコピーしたい

Windowであるフォルダ内の全てのファイルを取得して、別のディレクトリのフォルダへコピーしたいです。 バッチコマンドでできれば一番いいのですが、そんな機能をもっているコマンドはないみたいなので、VBスクリプトでも構いません。 いい方法ないでしょうか?

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

'PDFファイルがあるフォルダ名 strBasePath = "C:\Box" 'コピー先のフォルダ名(このサブフォルダに6桁のフォルダ名が自動作成される) strCopyPath = "C:\Box" Call CustomCopyFile(strBasePath,strCopyPath) '処理ルーチン Sub CustomCopyFile(BasePath,CopyPath) Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(BasePath) 'ファイル名の検索 For Each objFile In objFolder.Files strFolder = Left(objFile.Name,6) strCreate = CopyPath & "\" & strFolder strFname = objFolder.Path & "\" & objFile.Name 'フォルダ自動作成 If Not objFS.FolderExists(strCreate) Then objFS.CreateFolder(strCreate) End If 'コピー処理 objFS.CopyFile strFname, strCreate & "\" Next End Sub

kuriosprj
質問者

お礼

お返事大変遅くなり申しわけありません。 コードまで作っていただきましてありがとうございます。 大変参考になりました。 使えそうです。 本当にありがとうございました。 また、何かの節はよろしくお願いいたします。

その他の回答 (4)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★kuriosprj さんへ ・VBスクリプトを作ってみました。 ・ソースは次の回答で紹介します。 ・ソース内にある  『strBasePath』に PDF ファイルがあるフォルダ名を指定して下さい。→フルパス名  『strCopyPath』にコピー先のフォルダ名を指定して下さい。→フルパス名  ※この『strCopyPath』に 6 桁のサブフォルダ名が自動作成されます。 ・全自動の処理を行わせるためにメッセージなどは表示されません。 最後に: ・ファイルはコピーですよね。もしも、ファイルの移動ならば『objFS.CopyFile』を  『objFS.MoveFile』に変更して下さい。これで移動処理に変わります。 ・以上。おわり。

  • Jimo
  • ベストアンサー率37% (68/179)
回答No.3

完全にカスタムメイドですね。最初の文章ではまったく分かりませんでした。このような仕様だと,残念ながら作るしかないと思います。

  • Jimo
  • ベストアンサー率37% (68/179)
回答No.2

要求仕様がよく分からないのですが,自動でやりたいのですか,それとも手動でも良いのですか? 手動で良いなら,x1vaさんのようにコマンドラインでやっても良いし,あるいはexplorer内で当該フォルダ内に入り,Ctrl+Aで全選択して,Ctrl+Cでコピー,コピー先でCtrl+Vで行けますよね?そういう話ではないとすると,例えばcygwinなどのUNIXライクコマンドを組み合わせる手もあるかもしれません。出来る出来ないは保証の限りではありませんが, find . -depth -print | cpio -pdl newdir なんて手があるかな・・・

kuriosprj
質問者

補足

お返事遅くなりました。 やはり仕様がいまいち伝わりませんでしたね。 これは自動で行いたいです。 (1)ある処理である1つのフォルダにPDFファイルが複数たまります。 (2)(1)でたまったPDFファイル名の先頭から6桁を取得して別のフォルダへコピーする。 例) (1)  a、A001000702021.pdf  b、A001000702022.pdf  c、B002000702021.pdf  というファイルが”BOX”というフォルダにあるとすると (2)の処理で  フォルダ”A00100”にはa、b が  フォルダ”B00200”にはc がコピーされている といった処理を行いたいのです。 (1)の数時間後に(2)の処理をしようとしています。 スクリプトじゃなくてもフリーソフトでもあればいいのですが・・

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.1

copyまたはxcopyコマンドじゃダメなのですか?

関連するQ&A