2011-03-24 99 views
2

我正在使用Windows批處理編程創建一個ftp連接到ftp主機,並自動將文件上傳到該主機。但是,ftp命令沒有參數來獲取命令中的用戶名和密碼,我必須在後續命令中輸入它。批處理文件如何等待ftp連接建立,然後回顯後續ftp命令的用戶名和密碼? 感謝您的幫助。命令輸入參數需要用戶手動輸入批處理編程

回答

1

實際上有不同的方式來做到這一點。

Windows ftp接受包含要運行的命令的「-s:filename」參數。你可以用「USER username \ nASSASS」的格式存儲用戶名和密碼,當連接建立時它們將首先運行。

確保刪除文件之後,或更好,但使用不打磁盤臨時文件;)

編輯:澄清對coolkid。這真的是你的答案(謝謝你的備份喬伊)。

爲了明確,在這裏你是。

upload.cmd內容:

@echo off 
set /p name= Username? 
set /p pass= Password? 

REM Give dummy data to the human-friendly FTP prompts 
REM We will pass actual FTP commands in the next stanza 
echo dummy > ftp_commands.txt 
echo dummy >> ftp_commands.txt 

echo USER %name% >> ftp_commands.txt 
echo PASS %pass% >> ftp_commands.txt 
echo PUT ftp_commands.txt >> ftp_commands.txt 

ftp -s:ftp_commands.txt ftp.mydomain.com 

運行upload.cmd

C:\>upload.cmd 
Username?anonymous 
Password?foobar 
Connected to ftp.mydomain.com. 
220 2k-32-71-e Microsoft FTP Service (Version 5.0). 
User (ftp.mydomain.com:(none)): 
331 Password required for dummy . 

530 User dummy cannot log in. 
Login failed. 
ftp> USER anonymous 
331 Anonymous access allowed, send identity (e-mail name) as password. 

230 Anonymous user logged in. 
ftp> PUT ftp_commands.txt 
200 PORT command successful. 
+1

感謝您的解決方案。但根據真實的解決方案,此文本文件的前兩行不包含兩個ftp命令「用戶」和「密碼」,但它只能包含 \ n coolkid 2011-03-25 11:24:50

1

您可以將某些數據回顯到臨時文件,然後將該文件重定向到ftp命令的標準輸入。例如:

>file echo USERNAME 
>>file echo. 
>>file echo PASSWORD 
>>file echo. 
ftp < file 
rem Now we can delete the file 
del file 

如果沒有需要有換行符(必要模擬當FTP程序要求憑據ENTER按鍵),那麼你可能不臨時文件管理:

echo USERNAME | ftp 
+1

使用'FTP -s:file'如下狀態答案這正是爲此目的:-) – Joey 2011-03-24 09:56:30

+0

我不對你的回答不太重要。 「>文件」的意思是什麼? – coolkid 2011-03-25 11:19:43

+0

@coolkid:看看這裏:http://www.febooti.com/products/command-line-email/batch-files/ms-dos-command-redirection.html – Jon 2011-03-26 00:14:52

相關問題