2017-04-19 111 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

相關問題