2017-04-19 148 views
0

我只想下载以前没有从FTP服务器下载的文件。我目前正在使用WinSCP。我不想去控制台并编写代码,因为我希望将来可以自动执行此过程。我目前的代码如下:从FTP服务器下载不存在的文件

"C:\Program Files (x86)\WinSCP\WinSCP.com"/command^
    "open ftp://rnan:[email protected]/kgptel/"^

    "lcd \D C:\Users\rnan\Desktop\Batch Files"^
    "get -latest *"^
    "exit" 

此代码只是在控制台中打开会话。

请提出更改,使文件自动传输,而无需转到控制台并手动键入代码。

谢谢。

回答

0

主要问题是空行。您必须将其删除,因为它会终止WinSCP参数列表(或者,如果您需要新行以提高可读性,则必须跳过^的新行)。

您有其他问题,但:

  • WinSCP lcd command只接受一个参数。如果你想这样做,Windows cd /D做什么,不需要任何开关。 WinSCP lcd自行切换驱动器。
  • 您必须quote the argumentlcd,因为它包含空格。
  • 应该有/command前空间(虽然作品,未经空间太)
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command^
    "open ftp://rnan:[email protected]/kgptel/"^
    "lcd ""C:\Users\rnan\Desktop\Batch Files"""^
    "get -latest *"^
    "exit" 

正如我建议你们,WinSCP赋予GUI可以generate a batch file template for you

Generate download batch file

唯一缺少的是-latest开关。

+0

谢谢,当我执行bat文件时,它说有一些错误,并说会话失败。你知道为什么吗? 另外,set命令在由winSCP生成的批处理脚本中做了什么 – qwerty

+0

'set'命令将WinSCP退出代码保存到一个变量中,所以它可以在'exit'命令中重复使用。以防万一,你在'if' /'else'分支中做了一些更复杂的错误处理(比如[使用某个应用程序发送错误邮件](https://winscp.net/eng/docs/guide_automation#results) ),它会覆盖'%ERRORLEVEL%'。 –

+0

感谢它创造奇迹! :D:D你是老板! – qwerty

相关问题