2011-03-02 195 views
11

我有一個批處理腳本,它可以動態地創建一些文件,並根據時間,日期等等生成四個具有一定隨機文件名的文件。然後它需要通過FTP將該文件上傳到服務器。是否可以將變量傳遞給Windows FTP腳本文件?

截至目前,我的.bat文件有一個類似「ftp -s:ftp.txt」的行。 Ftp.txt包含了一些非常簡單的FTP腳本的東西:像this--

open ftp.myserver.com 
username 
password 
put filename1.dat 
put filename2.dat 
put filename3.dat 
put filename4.dat 

我希望做的是通過在需要上載的文件名,然後替換「把filename1.dat」與「put%file1%」 - 其中%file1%是傳入的文件名變量。

這可能嗎?任何人都知道如何去做?或者我的整個方法是錯誤的?

+0

.bat文件可以使用變量。他們可以循環。他們可以遍歷文本文件的每一行。很多選擇。 – 2011-03-02 16:52:01

+0

問題在於ftp.txt不是批處理文件,它是一系列將被傳送到ftp客戶端的命令。 – 2011-03-02 16:55:26

+0

@Marc如果他有一個批處理腳本,SuperNES可以生成ftp.txt – 2011-03-02 17:00:20

回答

15

您可以使用bat文件隨時生成ftp.txt文件。只是這樣做:

echo ftp.myserver.com>ftp.txt 
echo username>>ftp.txt 
echo password>>ftp.txt 
echo put filename1.dat>>ftp.txt 
echo put filename2.dat>>ftp.txt 
echo put filename3.dat>>ftp.txt 
echo put filename4.dat>>ftp.txt 
ftp -s:ftp.txt 

當然,現在你在bat文件,你可以使用環境變量和其他的東西來代替「filenameX.dat」的

例如:

echo put %file1% >>ftp.txt 
+0

這工作。謝謝! – SuperNES 2011-03-02 17:14:06

+0

不要在'>>'之前放一個空格,否則會在文本文件中打印一個空格,破壞密碼。我不得不使用'echo password >> ftp.txt'而沒有額外的空間。 – degenerate 2016-03-30 12:08:54

+1

@degenerate:固定,謝謝! – 2016-03-30 12:21:52

0

我不認爲窗口中的命令行FTP客戶端足夠聰明,可以對命令執行環境/ shell變量插值。但是,您可以讓控制.bat文件動態地生成ftp腳本,並且在仍處於shell級別時執行可變內容。

2

要更新答案,這裏是一個更新的批處理文件。請注意,在用戶名和密碼後排除空格(因爲它將空間傳遞給ftp站點)。這也將利用傳遞給批處理文件的參數。

echo open ftp.myserver.com>ftp.txt 
echo username>>ftp.txt 
echo password>>ftp.txt 
echo put %1>>ftp.txt 
echo quit>>ftp.txt 
ftp -s:ftp.txt 
相關問題