FTP将目录中的所有文件复制到本地目录

时间:2016-09-08 09:21:59

标签: windows batch-file ftp winscp winscp-net

我正在尝试使用用户名mark123和密码testabc将目录“C:\ Documents \ Client \”创建到一个FTP(如ftp.tester123.com.au)的批处理文件到本地目录“C:\桌面\ GoHere \”。

该脚本是将此ftp目录中的所有文件复制到本地计算机。我已经阅读了以下msdn教程 https://support.microsoft.com/en-gb/kb/96269

但它对我目前的问题没有帮助。 winscp允许我执行此任务并为其创建批处理文件吗?我想自动执行这个目录 - 比如每晚午夜。这可能吗?

或者我非常熟悉.NET,winSCP有一个包装器,允许你编写C#而不是标准脚本。如果我使用.NET方法,我可以创建一个简单的.exe文件或批处理文件,可以通过双击来执行吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

你要做的是一项非常简单的任务。你缺少的是对任务的概念性理解。因此,很难给出一个对您有帮助的答案,因为很难理解您缺少哪些知识来完成它。

最简单的方法是利用WinSCP的能力generate a transfer code

  • 使用WinSCP登录您的FTP服务器;
  • 导航到源远程目录和目标本地目录;
  • 选择要下载的远程文件(所有文件?);
  • 使用文件>在主菜单中下载命令(或文件'上下文菜单中的下载命令);
  • Download dialog上,点击传输设置按钮上的下拉箭头,然后选择生成代码命令。

您将获得Generate transfer code dialog

在那里,您可以选择是否要将WinSCP设为generate a WinSCP script or even complete Windows batch file

enter image description here

.NET assembly (C#) code

enter image description here

(这些是来自WinSCP文档的官方截图。所以他们显示SFTP上传,而不是FTP下载)

现在您已准备好批处理文件或C#可执行文件,您可以schedule it to be run using Windows Scheduler

答案 1 :(得分:1)

如果已安装WinSCP,则以下代码将为您工作。我从特定文件夹中提取了所有文件,并将其下载到本地文件夹中。一路写了一个日志文件。您也可以使用WinSCP生成此代码。

@echo off
set mydate=%date:~10,4%%date:~7,2%%date:~4,2%
set d_name=/export/home/sysm/opt/oss/server/var/fileint/pm/pmexport_%mydate%
#echo %d_name%

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\Users\HP\Desktop\Datacom\Reports\WinSCP.log" /ini=nul ^
  /command ^
    "open sftp://YOUR_USERNAME:YOUR_PASSWORD@FTP_SERVER_IP/ -hostkey=""ssh-rsa 1024 PUuYRVADKXB9j1Si+o89v2fsrsr7w2ZrV3NIqdz6kus0GtY=""" ^
    "cd %d_name%" ^
    "lcd C:\Users\HP\Desktop\Datacom\Reports\Test_ftp" ^
    "get *" ^
    "exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)
exit /b %WINSCP_RESULT%

根据需要对其进行修改,然后将代码放入.bat文件中。稍后,您可以手动执行它或使用Windows Task Scheduler。