2014-09-25 260 views
0

我有一個批處理文件打開到服務器的FTP連接並將文件放到指定位置。無法將命令行參數傳遞給批處理文件

下面是我的ftpConnection.bat文件的樣子..

open HOST 
FTP_USER_NAME 
FTP_USER_PASSWD 
cd TO_DIR 
lcd TO_FILE_LOCATION 
put THE_FILE 
quit 

,並從命令提示符下如果我運行它像這樣ftp -i -s:ftpConnection.bat它工作正常。

我的要求就是要通過HOST,USER_NAME和PASSWORD作爲參數

,所以我試圖用%1 %2 and %3但是這不是爲我工作。

傳遞的參數是這樣

C:\Users\xxx\Desktop>ftp -i -s:ftpConnection.bat "HOST" "USER_NAME" "PASSWORD" 

也試過不帶引號,但結果是一樣的,它顯示

傳輸文件,並從一臺計算機上運行的FTP服務器服務 (有時稱爲守護進程)。 Ftp可以交互使用。

FTP [-V] [-d] [-i] [-n] [-g] [-s:文件名] [-a] [-A] [-x:sendbuffer] [-r:recvbuf FER] [-B:asyncbuffers] [-w:windowsize] [主持人]

其次,試圖幾個文件像How to pass multiple parameters in CMD to batch fileBatch file command line arguments

他們建議使用設置我試着像下面一樣,但結果是一樣的。

set host=%1 
set uname=%2 
set passwd=%3 
open %1 
%2 
%3 

任何人都可以建議我什麼我做錯了或任何指針實現這一目標。

在此先感謝。

回答

3

對不起,但是您正在使用帶有預期輸入和命令的文本文件,並且使用ftp命令進行解釋。這不是一個Windows批處理文件,不能使用它的語法。

要使用所需的數據作爲參數調用中,你需要一個批處理文件,將產生從傳遞的參數

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    if "%~3"=="" goto :eof 

    set "TO_DIR=......" 
    set "TO_FILE_LOCATION=......" 
    set "THE_FILE=........" 

    > ftpScript (
     echo open %~1 
     echo %~2 
     echo %~3 
     echo cd %TO_DIR% 
     echo lcd %TO_FILE_LOCATION% 
     echo put %THE_FILE% 
     echo quit 
) 

    ftp -i -s:ftpScript 

現在,你有一個批處理文件的FTP腳本(我們稱之爲doFTP.cmd) ,你可以調用作爲

doFTP.cmd ftpserver userName pa$$word 

在命令行中的參數都存儲在%1%2%3變量(%~1是第一個參數不周圍如果報價p並在批處理文件中用於生成(echo命令塊被重定向到ftpScript文件)ftp將處理的文本文件。

0

根據你使用它就像

set host=%1 
set uname=%2 
set passwd=%3 
open %host% 
%username% 
%passwd% 

您可以通過之間的兩個%VAR名稱%封閉使用設置變量回以上 如圖我請試試看

+0

按照上面的建議嘗試,但沒有區別。 – 2014-09-25 08:15:55

相關問題