2014-09-25 211 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

相关问题