みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォルダコピーで失敗したファイル名をログに取得したい

こんにちは。
フォルダのコピーをVBスクリプトを使って出来ないか検討しています。
条件は

1. コピーするフォルダにはファイルやサブフォルダが複数存在している
2. コピー途中でエラー(コピー出来ないファイルがあった場合等)が発生した場合はそのファイルをスキップして処理を継続する。
3. エラーの対象となったファイルまたはフォルダ名をログに出力する。

試しにVBスクリプトで作成してみましたが、これだとコピー処理が成功or失敗しか分かりません。
イメージ的には、コピー元のフォルダ内の各ファイルの情報を取得して、ひとつひとつのファイル毎にループ制御を使ってコピー処理を行いその際に正常にコピーしたかどうかをチェック出来ればと考えています。
以下のソースは上記の条件を満たしていませんが、(参考になりませんが)参考として載せました。
スクリプトはまだまだ未熟なので、よろしくお願いします。

'エラーが発生しても次のステップに進むための宣言
On Error Resume Next

'FileSystemObjectオブジェクトを作成
Set objFS = CreateObject("Scripting.FileSystemObject")

'WScript.Shellオブジェクトを作成
Set objShell = CreateObject("WScript.Shell")

'ログファイルの作成
set strLog = objFS.CreateTextFile("C:\Errlog.log", True)

'フォルダコピー
If objFS.FolderExists("c:\aaa") = False Then
objFS.CreateFolder("c:\aaa")
objFS.copyFolder "c:\aaa", "c:\bbb"
If Err.Number <> 0 Then
MsgBox(Err.Number & " " & Err.Description)
End If
strLog.WriteLine "コメント"
Else
objFS.copyFolder "c:\aaa", "c:\bbb"
strLog.WriteLine "コメント"
End If

投稿日時 - 2007-02-20 21:51:53

QNo.2770007

困ってます

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

個々のファイル、サブフォルダごとにエラーを判定したいのであれば、お考えのとおり、個々のファイル、サブフォルダごとにCopyFileメソッドとCreateFolderメソッドを使うしかありません。

FilesコレクションとFoldersコレクションの例を見て下さい。VBScriptの方は関数名があやしいものがありますが。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jscolfiles.asp
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jscolfolders.asp

サブフォルダは再帰的に扱うとよいでしょう。下記が参考になると思います。
http://www.atmarkit.co.jp/fwin2k/operation/wsh11/wsh11_01.html

投稿日時 - 2007-02-21 02:16:04

お礼

ありがとうございます。
丁度いいサンプルもありました。
参考にしてやってみます。

投稿日時 - 2007-02-21 22:35:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問