いちばん失敗した人決定戦

こんにちは。
フォルダのコピーを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

A 回答 (1件)

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



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

サブフォルダは再帰的に扱うとよいでしょう。下記が参考になると思います。
http://www.atmarkit.co.jp/fwin2k/operation/wsh11 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/21 22:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!