WSHファイルコピーサンプルスクリプト
WSHファイルコピーサンプルスクリプト
WSHで指定したフォルダ配下のファイルをすべてコピーするサンプルスクリプトです。
コピー先に同一ファイル名があった場合は日時でリネームしてバックアップを取ります。
Option Explicit '=============================================================================== ' ファイルコピー '=============================================================================== ' 定数 Const cstrPathDelimiter = "\\" ' パス区切り文字 '=============================================================================== ' メイン処理 '=============================================================================== Main Sub Main Dim objFileSys ' ファイルシステムオブジェクト Dim strFromDir ' コピー元フォルダ Dim strToDir ' コピー先フォルダ Dim blnRet ' 戻値 Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject") ' 引数の取得 If Wscript.Arguments.Count < 2 then WScript.Echo "使用法:" & WScript.ScriptName & " コピー元フォルダ コピー先フォルダ" WScript.Echo "指定したフォルダの内容をコピーします。" WScript.Echo "コピー先に同名のファイルが存在した場合は、_日付_時刻の形式でバックアップします。" Exit Sub End If strFromDir = Wscript.Arguments.item(0) strToDir = Wscript.Arguments.item(1) ' フォルダの有無確認 If objFileSys.FolderExists(strFromDir) = False Then WScript.Echo "フォルダ[" & strFromDir & "]は存在しません。" Exit Sub End If If objFileSys.FolderExists(strToDir) = False Then WScript.Echo "フォルダ[" & strToDir & "]は存在しません。" Exit Sub End If WScript.Echo strFromDir & " " & strToDir blnRet = fncCopyFile(strFromDir, strToDir) End Sub '=============================================================================== ' 全ファイルコピー '=============================================================================== Function fncCopyFile(strFromDir, strToDir) Dim objFileSys ' ファイルシステムオブジェクト Dim objFolder ' フォルダオブジェクト Dim objSubFolder ' フォルダオブジェクト Dim objFile ' ファイルオブジェクト Dim strToFolderName ' コピー先フォルダ名 Dim strToFileName ' コピー先ファイル名 Dim blnRet ' 戻り値 Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject") Set objFolder = objFileSys.GetFolder(strFromDir) ' フォルダリスト取得 For Each objSubFolder In objFolder.SubFolders WScript.Echo objSubFolder.Name ' debug strToFolderName = strToDir & cstrPathDelimiter & objSubFolder.Name ' コピー先のフォルダ有無確認 If objFileSys.FolderExists(strToFolderName) = False Then objFileSys.CreateFolder(strToFolderName) End If blnRet = fncCopyFile(strFromDir & cstrPathDelimiter & objSubFolder.Name, strToFolderName) Next ' ファイルリスト取得 For Each objFile In objFolder.Files WScript.Echo objFile.Name ' コピー先のファイル有無確認 strToFileName = strToDir & cstrPathDelimiter & objFile.Name If objFileSys.FileExists(strToFileName) = True Then ' 存在する場合リネーム Call objFileSys.MoveFile(strToFileName, strToFileName & "_" & Replace(Date(), "/", "") & "-" & Replace(Time(), ":", "")) End If ' ファイルをコピー Call objFileSys.CopyFile(strFromDir & cstrPathDelimiter & objFile.Name, strToFileName) Next fncCopyFile = true End Function