2017-10-16 94 views
0

早上好一切,將文件從一個FTP文件夾移動到同一FTP中的另一個文件夾的批處理文件?

我有,我需要自動化,我們從FTP站點下載文件的過程的任務,該文件是在SQL處理,然後在FTP站點上的文件移動到另一個文件夾在同一個FTP站點上。

我已經倒下了前兩部分,但將FTP上的文件移動到同一FTP上的另一個文件夾的部分讓我失望。

任何人都可以請提供一些建議嗎?

這是我目前有:

@Echo Off 
Set _FTPServerName=SERVER HERE 
Set _UserName=LOGIN HERE 
Set _Password=PASSWORD HERE 
Set _RemoteFolder=FILES FROM 
Set _NewRemoteFolder=FILES TO 
Set _Filename=*.* 
Set _ScriptFile=ftp1 

:: Create script 
"%_ScriptFile%" Echo open %_FTPServerName% 
"%_ScriptFile%" Echo %_UserName% 
"%_ScriptFile%" Echo %_Password% 
"%_ScriptFile%" Echo cd %_RemoteFolder% 
"%_ScriptFile%" prompt 

:: Run script 
ftp -s:"%_ScriptFile%" 
Del "%_ScriptFile%" 

請讓我知道,如果您還有其他問題!

+0

客戶端的操作系統和FTP主機的操作系統是什麼? – lit

+0

@lit客戶端是Windows 10,FTP主機是Windows Server 2012 –

+0

沒有移動命令。您需要下載這些文件,然後將它們上傳到其他文件夾中。 – Squashman

回答

2

有在Windows ftp.exe命令行客戶端rename command

rename oldname newname 

因此,在特定的批處理文件:

"%_ScriptFile%" echo rename file.txt %_NewRemoteFolder%/file.txt 

雖然看到_Filename=*.*我你的問題,它看起來像你想要移動所有文件。這對於Windows ftp.exe來說是不可能的,至少不容易。 rename命令不支持通配符。

您必須根據每個文件的單獨rename命令,基於下載文件列表動態生成腳本文件。


或者在重命名/移動時使用支持通配符的其他命令行FTP客戶端。

例如與WinSCP scripting批處理文件將是這樣的:

winscp.com /log=winscp.log /command^
    "open ftp://username:[email protected]"^
    "cd %_RemoteFolder%"^
    "mv *.* %_NewRemoteFolder%/"^
    "exit" 

有關詳細信息,請參閱:

(我是作者的WinSCP)

0

處理此問題的最直接方法是使用PowerShell。這將使文件複製發生在FTP主機上,而不需要數據在寫回到服務器之前到達客戶端。

Invoke-Command -ComputerName FTPHOST -ScriptBlock { Move-Item -Path C:\dir1\thefile.txt -Destination C:\dir2\thefile.txt } 

您可以從cmd.exe shell運行此操作。

powershell -NoProfile -Command "Invoke-Command -ComputerName FTPHOST -ScriptBlock { Move-Item -Path C:\dir1\thefile.txt -Destination C:\dir2\thefile.txt }" 
+0

嘿@lit非常感謝你的迴應。你知道PowerShell是預裝還是需要安裝和配置的東西嗎? –

+0

另外,您提供的代碼是否可以在批處理文件中執行? –

+0

我相信PowerShell預先安裝在Windows 10和Server 2012上。您可能必須配置PowerShell遠程處理。 – lit

相關問題