用vbs将本地文件替换为在文件服务器上找到的新版本

问:
您好,脚本专家!如何将本地文件的修改日期与文件服务器上的副本进行比较,并且,如果本地文件的版本更旧,将其替换为文件服务器上的版本?
-- DC
答:
您好,DC。让我们想想,您是想将某些旧的东西替换为新的。不知道为什么,这让我们感到很不安。
嗯,并不是因为脚本专家正在变老,这得提醒您,我们没有。毕竟,膝盖和后背就应该是这么吱吱作响的;不然怎么知道它们在发挥作用呢?!?
注意:据说,当爱斯基摩人老得不中用的时候,他们会被抛弃在大块浮冰上任其自生自灭。幸好脚本专家都不是爱斯基摩人,而我们每天都要穿戴好外衣、手套和长统帽上班(包括夏天)。以防万一。
不过比起过时的脚本专家来说,您可能更关心过时的文件,是吧?下面这个脚本将替换本地文件 C:\Scripts\Test.txt(如果此文件正好比其在服务器 atl-fs-01 上的副本更旧):


代码如下:

Const OverwriteExisting = TRUE 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt") 
dtmLocalDate = objLocalFile.DateLastModified 
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt") 
dtmServerDate = objServerFile.DateLastModified 
If dtmLocalDate < dtmServerDate Then 
    objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting 
End If

如您所见,这是个非常简短的小脚本。(我们必须承认除去有点困扰我们的过时的旧东西真的很容易。)我们首先创建一个名为 OverwriteExisting 的常量并将其值设置为 True。我们将使用此常量告诉 FileSystemObject 可以对目标文件的现有实例进行覆盖。默认情况下,如果某文件在驱动器 2 上已存在,则 FileSystemObject 不会将其从驱动器 1 复制到驱动器 2 上。
说到 FileSystemObject,我们在此脚本的下一行创建此对象 (Scripting.FileSystemObject) 的一个实例。然后,我们使用以下两行代码绑定到我们的第一个文件 (C:\Scripts\Test.txt),并将此文件的上次修改日期(DateLastModified 属性)存储在名为 dtmLocalDate 的变量中:
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt")
dtmLocalDate = objLocalFile.DateLastModified
然后,通过创建对服务器版本 Test.txt 的对象引用重复此过程。请注意,此处我们使用的变量名称不同:本地文件的对象引用存储在 objLocalFile 中,服务器文件的对象引用存储在 objServerFile 中。不用说,我们还使用了不同的变量 (dtmServerDate) 来存储此上次修改日期:
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt")
dtmServerDate = objServerFile.DateLastModified
仍在看吗?下一步我们需要确定本地文件是否比服务器文件更旧。下面这行代码就用来解决这个问题:
If dtmLocalDate < dtmServerDate Then
别被这的语法搞糊涂了。我们很容易假定旧文件的日期应该大于新文件。但实际上日期不是这么处理的。假定“文件 A”的修改日期为 2/1/2006,“文件 B”的修改日期为 2/15/2006。“文件 A”比较旧,这意味着“文件 A”的修改日期小于(即,产生早于)“文件 B”。 
那么如果本地文件比其服务器副本更旧,如何将本地文件替换为服务器上找到的副本?方法如下:
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
正如您看到的,我们要做的就是调用 CopyFile 方法并向其传递三个参数:
? 我们想要复制的文件(即,服务器上找到的 Test.txt 版本)的路径。
? 我们想要将此文件复制到的路径。在本例中,即为本地文件的路径。
? 常量 OverwriteExisting,它用来告诉脚本继续进行,并使用从服务器复制的版本替换本地文件。
至此您已实现了您的目的。然而,请记住,此脚本仅适用于旧文件。您不能使用它来替换,嗯,老脚本专家。(当然,倒不是有人梦想过替换脚本专家。不过,还是以防万一 ...)

(0)

相关推荐

  • 用vbs将本地文件替换为在文件服务器上找到的新版本

    问: 您好,脚本专家!如何将本地文件的修改日期与文件服务器上的副本进行比较,并且,如果本地文件的版本更旧,将其替换为文件服务器上的版本? -- DC 答: 您好,DC.让我们想想,您是想将某些旧的东西替换为新的.不知道为什么,这让我们感到很不安. 嗯,并不是因为脚本专家正在变老,这得提醒您,我们没有.毕竟,膝盖和后背就应该是这么吱吱作响的:不然怎么知道它们在发挥作用呢?!? 注意:据说,当爱斯基摩人老得不中用的时候,他们会被抛弃在大块浮冰上任其自生自灭.幸好脚本专家都不是爱斯基摩人,而我们每天都

  • 使用VBS浏览本地文件的3种方式,获取完整路径

    因为系统组件差异,所以代码也有不同文章最后我们给出一个通用的代码 XP下: Function BrowseForFile( ) ' Select File dialog based on a script by Mayayana ' Known issues: ' * Tree view always opens Desktop folder ' * In Win7/IE8 only the file NAME is returned correctly, the path returned w

  • asp下实现替换远程文件为本地文件并保存远程文件的代码

    1.将下面的文本文件下载,并将.TXT改为remote.asp,里面有具体设置方法 复制代码 代码如下: <%  '添加资源时是否保存远程图片 Const sSaveFileSelect=True '远程图片保存目录,结尾请不要加"/" Const sSaveFilePath="/images/News" '远程图片保存类型 Const sFileExt="jpg|gif|bmp|png" '////////////////////////

  • js利用FileReader读取本地文件或者blob方式

    目录 FileReader读取本地文件或blob 一.FileReader的使用 二.FileReader的方法 三.FileReader的属性 四.FileReader的事件 使用FileReader读取本地磁盘文件问题 FileReader读取本地文件或blob FileReader对象提供了异步读取存储在用户计算机上的文件的内容,使用 File或 Blob 对象指定要读取的文件或数据,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. 一.FileReader的使用 注

  • ASP.NET Core 2.0 本地文件操作问题及解决方案

    问题 如何在ASP.NET Core 2.0中受限地访问本地目录和文件信息? 答案 新建一个空项目,修改Startup类,添加访问本地文件所需的服务: public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFileProvider>( new PhysicalFileProvider(Directory.GetCurrentDirectory())); } 创建一个中间件,读取根目

  • shell脚本实现本地文件与服务器文件同步

    为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p "请输入项目名:" name echo -e "\n" echo "项目名为:$name" case $name in cn) rsync -r ~/project1 root@192.168.18.2:/project1 --exclude=&q

  • 利用xcopy命令实现本地文件复制到远程服务器的方法

    A.net use \\IP地址 密码/user:****** B.xcopy 文件 \\IP地址\ 批处理文件为backup.bat,其代码如下: ========================================================================================= net use \\192.168.1.198\ipc$ Zqf198703 /user:royalpeak xcopy g:\backup\*.* \\192.168.

  • 将本地文件通过远程桌面连接直接复制或粘贴到远程主机的具体方法

    我在使用远程服务器时,无法将本地文件复制到远程主机上,也就是说,我在本地电脑上的文件右键点击复制,在远程电脑上的文件夹里面右键再点击,根本就没有粘贴这个选项,很是郁闷啊,经过我的一番搜索,最终得到解决,具体的操作方法如下,可能比较笨拙,但最终还是解决了问题,供大家参考使用: 首先,开始/运行,在运行中输入指令mstsc(这是自带的远程访问(图型界面)命令),点击确定: 然后,在弹出的对话框中输入连接的远程计算机的名称: 其次,单击选项,找到本地资源选项卡,点击详细信息,勾选驱动器,单击连接: 最

  • vbs 批量修改文件,bat 批处理文件调用执行vbs,并在cmd窗口打印返回值(vbs运行结果)

    示例代码(t.vbs)如下: 复制代码 代码如下: Set fso=Wscript.CreateObject("Scripting.FileSystemObject") flrName="D:\Workspace\src\" 'dir that you need deal with count=0 'get the count of modified files function Traversal(dir) set flr=fso.getfolder(dir) s

  • js 获取本地文件及目录的方法(推荐)

    Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高级语言中经常做的工作一样.怎么样,你是否需要了解这方面的知识?那就请跟我来,本文将详细描述如何使用Javascript语言进行文件操作. 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详

随机推荐