复制文件,无论是从计算机上的一个文件夹到另外一个文件夹还是从一个计算机到另外一个计算机,都是一个非常常见的管理任务。如你希望拷贝一个监视的脚本到你所有的服务器上面来取代过去的 DLL 文件。CopyFile方法提供了这种任务管理的办法。CopyFile 方法需要两个必备参数和一个可选的参数:
1、Source - 要拷贝的文件的源文件的路径。
2、Destination — 目标文件夹的路径。为了确保在目标文件夹也是同样的名字,将一个脱尾符放在文件夹的结束之前(“ ”)
objFSO.CopyFile "C:FSOScriptLog.txt" , "D:Archive"
如果你想重新命名该文件,你可以将全路径写成如下的格式:
objFSO.CopyFile "C:FSOScriptLog.txt" , "D:ArchiveNewFileName.txt"
如果目标文件夹不存在,则会自动创建。
3、Overwrite可选。默认情况下,CopyFile 方法不能复制到目标文件夹存在的同名文件。这导致错误。比如你要更高的版本覆盖存在的文件,那么将这个参数设置成 True。下面脚本拷贝文件 C:FSOScriptlog.txt 到文件夹 D:Archive。
The original file, C:FSOScriptLog.txt.
The copied file, D:ArchiveScriptLog.txt.
为了保证拷贝的正常进行,即使存在 D:ArchiveScriptlog.txt,脚本将可选参数 Overwrite设置成 True(用常量 OverWriteExisting)
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:FSOScriptLog.txt" , "D:Archive", OverwriteExisting
当你确定一个目标文件夹的时候,脱尾的反斜线是十分必要的。(例如D:Archive)如果你的反斜线在,那么文件会被拷贝到 Archive 文件夹,如果反斜线不在的话,脚本的 CopyFile尝试去建立一个叫做 D:Achive 的文件夹。如果这个文件夹存在,那么会产生一个”Permission denied Error”的错误出来,拷贝的进程会失败的。这个对于只读文件来说也是错误的,虽然你可能将强制参数设置成 True。如果没有反斜线,你必须先将原来的文件删除,然后再调用CopyFile 方法来实现。
通配符提供了一种拷贝整个文件夹中所有的文件的方法。你可以用脚本复制一些具有共同参数的文件。例如下列脚本拷贝在 C:FSO 中所有的 txt 文件到 D:Archive.
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:FSO*.txt" , "D:Archive" , OverwriteExisting
在 CopyFile 的方法中添加通配符来拷贝文件的时候,只是拷贝当前文件夹的文件。而用CopyFolder 的方法,正好相反,它也拷贝子文件夹的信息和文件。如下的脚本代码语句拷贝文件夹 C:FSO 中所有的文件,而不拷贝子文件夹的信息。
objFSO.CopyFile "C:FSO*.*" , "D:Archive"
Moving a File
如果磁盘空间很低,希望将文件移动到一个新的位置;如果计算机换了规则,或许希望移动特定的诊断工具取代原来的。在其它的一些情况下,你或许不希望存在这个文件的副本,而是将它移动到一个新的位置。MoveFile 方法让你将文件从一个地方移动到另外一个地方。MoveFile 方法和 CopyFile 的方法类似,你需要创建一个 FSO 对象,然后调用 MoveFile 的方法,需要两个参数:
1、需要移动文件的完整路径
2、需要移动到的目标文件夹的路径,包括脱尾符(反斜线)
下例中脚本将 C:FSOScriptlog.log 移动到 D 盘的 Archive 文件夹
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:FSOScriptLog.log" , "D:Archive"
你也可以用通配符来用一个操作移动多个文件。如为移动所有在文件夹 FSO 中以 data开头的文件,你可以用以下的参数: C:FSOData*.*
通配符可以用来移动特定的文件。因为文件的类型一般是用后缀名来标识的。如下例中脚本移动所有的日志文件到 D:Archive
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:FSO*.log" , "D:Archive"
重命名文件
FSO 并没有提供一种直接的方法来重新命名一个文件。但是和 MoveFolder 的方法可以重新命名文件夹一样,你也可以用 MoveFile 的方法来重新命名文件。为了重新命名一个文件,你可以用 MoveFile 的方法,但是目标文件夹应为当前的文件夹。
下例脚本中,将Scriptlog.txt 重新命名为 Backuplog.txt。而实际上脚本将 C:FSOScriptlog.txt 移动到一个新的路径 C:FSOBackuplog.txt,实现文件的重命名。
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:FSOScriptLog.txt" , "C:FSOBackupLog.txt"