下のスクリプト例では、コマンドライン引数で渡されたファイルを 参照ボックスによって選択されたフォルダにコピーします。 複数ファイルも指定可能です。尚、同名ファイルがすでにコピー先の フォルダにある場合、コピー元の日付が新しければ、上書きされます。


【実行画面】





< VBScript >

'//////////////////////////////////////////////////////////
'//
'//     コマンドライン引数で指定されたファイルを
'//         参照ボックスによって選択されたフォルダに
'//         コピーする(複数ファイルも指定可能)
'//         同名ファイルにつては、コピー元の日付が新しければ、
'//         上書きされる
Option Explicit
Dim args
Dim objShell, objFo, objFS
Dim strPath
Dim res

'//コマンドライン引数があるか調べる
'//     コマンドライン引数が渡されていなければ終了
Set args = Wscript.Arguments
If args.Count = 0 Then
    MsgBox "ファイルが指定されていません。",48
    WScript.Quit
End If

res = MsgBox("ファイルをコピーします。" & vbCr &_
    "同名ファイルがコピー先のフォルダにある場合、" & vbCr &_
    "コピー元の日付が新しけらば上書きされます。" & vbCr & vbCr &_
    "コピーを開始しますか?",33,"ファイルのコピー")
If res = 2 Then
    WScript.Quit
End If

'//コピー先のフォルダを選択
Set objShell = WScript.CreateObject("Shell.Application")
Set objFo = objShell.BrowseForFolder(0,_
    "コピー先のフォルダを選択して下さい",&h11)
If (objFo Is Nothing) Then
    WScript.Quit
End If
strPath = objFo.Items.Item.Path

'//各ファイルに対してコピー処理を行う
Dim myItem
Dim i
Set objFS = CreateObject("Scripting.FileSystemObject")
i = 0
For Each myItem in args

    '//ファイルが存在するか調べる
    If objFS.FileExists(myItem) Then
        Call CopyPr(myItem)     '//コピー処理
    Else
        MsgBox myItem & " が有りません",48
    End If

Next

'//終了のメッセージ
MsgBox i & " 個のファイルをコピーしました。",64,_
    "ファイルのコピー"


'//////////////////////////////////////
'//コピー処理
Sub CopyPr(strFile)

    Dim objFrom, objTo
    '//コピーするファイルがコピー先のフォルダに存在し
    '//     コピー先の日付の方が新しければコピーしない
    If objFS.FileExists(strPath & "\" &_
            objFS.GetFileName(strFile)) Then
        Set objFrom = objFS.GetFile(strFile)
        Set objTo = objFS.GetFile(strPath & "\" &_
            objFS.GetFileName(strFile))
        If objFrom.DateLastModified <= objTo.DateLastModified Then
            Exit Sub
        End If
    End If
    
    '//ファイルをコピー
    objFS.CopyFile strFile,strPath & "\"
    i = i + 1
    
End Sub



戻る