Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件

上一个随笔中我们提到了在Windows 7操作系统中配置ftp服务器并通过WinScp客户端来访问它,这样就可以方便的上传下载文件了。现在又有新的问题,我们发现如果项目中的文件很多,成百上千个文件,即使WinScp提供方便的文件拖拽功能,还是发现很繁杂。也许你会想到在dos中使用move命令,但是这个包含了cmd,cd,move等好几个命令,也是很费时间的。我们试图找到一种自动执行的程序,每隔一段时间来执行一次上传下载,这样我们的工作就很轻松了。这一次我们将使用dos命令做成bat文件,然后使用Task Scheduler调度bat来完成这个机械的,呆板的任务。感慨一下,只要我们想得到的,机器都能做得到!!!

批量上传

  1. 通常我们运行dos命令是首先点击开始-运行,输入cmd进入dos界面,首先要进入WinScp.exe的安装路径才能使用命令来调用它,否则会提示相关的 命令或参数不可识别。这个进入的过程就非常简单了,键入cd D:\InstallFile,键入回车,键入D:就进入这个路径了,
    因此我们需要使用命令
    cd D:\InstallFile
    D:
    这里请教高手为何要再次输入D:,键入回车才会进入我想要进入的目录呢?
  2. 输入命令从本地上传文件到ftp服务器,这个命令也是从客户的服务器上看到的,在网上查还没有找到相关的信息。最后全部的命令如下:
    
    
    cd D:\InstallFile
    D:
    winscp421.exe
    /console /command
     "option batch continue"
     "option confirm off" "open ftp://ftpuser1: ******@127.0.0.1:21"
     "option transfer binary" "put D:\Documents\Coaching\English\*.txt /Newfolder/"
     "exit"

    这里为了方便理解,一一解释。
    winscp421.exe /console /command     ::这个就是命令名
     "option batch continue"          ::这个默认批处理  
     "option confirm off"             ::这个是避免提示
    "open ftp://ftpuser1: ******@127.0.0.1:21"  ::这个是要访问的服务器,这里我访问本机上的ftp,使用用户名ftpuser1,密码******
    "option transfer binary"   ::这个使用二进制格式传送
    "put D:\Documents\Coaching\English\*.txt /Newfolder/" ::这个从本机文件夹中上传所有的txt文件,上传到服务器Newfolder文件夹中,注意这些内容放在一个参数中
     "exit"                     ::执行完命令后退出
  3. 为了截图我们去掉最后一个参数"exit”,将上面的文本复制到txt文件中,修改后缀为UploadFiles.bat,点击运行,就可以看到运行结果了如下图1。如图可以看到每个文件的名字,大小,传输速度等信息
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图1
    这样我们在本地路径内就可以看到文件了如图2,全是从网上找到英语学习资料
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图2

    

 

批量下载

批量下载和上面的命令刚好相反,只需要修改命令行就可以了,代码如下

cd D:\InstallFile

D:

winscp421.exe /console /command "option batch continue" "option confirm off" "open ftp://ftpuser1:******@127.0.0.1:21" "option transfer binary" "get /Newfolder/*.txt D:\Documents\DownLoad\" "exit"
从代码里可以看到我们将服务器中Newfolder文件夹下的所有txt文件下载到D:\Documents\DownLoad,同样将上面的文本保存为DownloadFiles.bat,点击运行,运行界面如下图3
Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件

设置环境变量
为了找到可执行程序,上面命令开头都添加了语句cd D:\InstallFile D:,我们也可以添加一个环境变量来保存路径,这样就可以省略这两句。

  1. 右击Computer,点击Properties,进入Windows系统界面,点击Advance System Setting如图4
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图4
  2. 点击Enviorment Variables,进入环境,在User Variable中双击Path,在最后添加新的变量指向WinScp.exe如图5
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图5
  3. 这样设置之后就可以修改UploadFiles.bat和DownloadFiles.bat文件,删除cd D:\InstallFile D:这两句。做java的对这个应该很熟悉。

       

添加Windows任务
现在已经很方便了,只要点击bat文件就能实现上传下载,但是还是觉得很啰嗦,于是我们需要将这两个bat文件添加到Task Scheduler中,设置schedule让他们自己运行。

  1. 右击Computer,点击Manage,打开Computer Management,如图6
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图6
  2. 右击Task Scheduler,点击Create Basic Task,打开Create Basic Task Wizard界面,输入task 的名字,如图7
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图7
  3. 点击Next进入Trigger界面,保持默认设置每天运行,如图8
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图8
  4. 点击Next,默认Start a programe,如图9
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图9
  5. 点击Next,进入Start a Program界面,选中我们刚刚生成的bat文件如图10
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图10
  6. 点击Next,点击Finish完成之后再Task Scheduler Library中就可以看到我们新建的task。如图11
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图11
  7. 双击设置运行属性,点击Triggers,设置每5分钟运行一次,如图12
    Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
    图12

    至此大功告成,每隔5分钟我们就可以看到弹出一个黑色dos对话框,然后迅速的消失,这就证明我们设置成功了,程序在按照设置运行,同时查看相应的目录可以查看上传的文件。同时也可以把DownloadFiles.bat也添加到Windows任务中。当下次有这种简单的但是量多的复制粘贴任务的时候就可以用到这个东西了,省事啊。




作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

上一篇:分布式系统的一致性协议之 2PC 和 3PC


下一篇:Go代码重构:23倍的性能爆增