我有一个批处理文件,它正在打开与服务器的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:UsersxxxDesktop>ftp -i -s:ftpConnection.bat "HOST" "USER_NAME" "PASSWORD"
也尝试过不带引号,但结果相同,显示
在运行FTP服务器服务的计算机之间传输文件(有时称为守护进程)。Ftp可以交互使用。
FTP[-v][-d][-i][-n][-g][-s:filename][-a][-a][-x:sendbuffer][-r:recvbuffer][-b:异步缓冲区][-w:窗口大小][主机]
遵循并尝试了一些文档,如如何将CMD中的多个参数传递到批处理文件和批处理文件命令行参数
他们建议使用set,我像下面这样尝试了一下,但结果是一样的。
set host=%1
set uname=%2
set passwd=%3
open %1
%2
%3
有人能告诉我我做错了什么吗。
提前谢谢。
很抱歉,您使用的是一个文本文件,其中包含预期的输入和命令,并由ftp
命令进行解释。这不是一个windows批处理文件,无法使用其语法。
要在调用中使用所需的数据作为参数,您需要一个批处理文件,该文件将根据传递的参数生成ftp脚本
@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
现在,您有一个批处理文件(让我们称之为doFTP.cmd
),您可以将其称为
doFTP.cmd ftpserver userName pa$$word
命令行中的参数存储在%1
、%2
和%3
变量中(%~1
是第一个没有引号的参数,如果存在),并在批处理文件中用于生成ftp将处理的文本文件(echo
命令块重定向到ftpScript
文件)。
根据您的使用情况,它就像
set host=%1
set uname=%2
set passwd=%3
open %host%
%username%
%passwd%
您可以通过将set变量括在两个%varname%之间来使用,如上所示请尝试