我正在打开与服务器的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:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuf fer] [-b:asyncbuffers] [-w:windowsize] [host]
关注并尝试了一些文档,例如 How to pass multiple parameters in CMD to batch file 和 Batch file command line arguments
他们建议使用设置,我尝试如下,但效果相同。
set host=%1
set uname=%2
set passwd=%3
open %1
%2
%3
任何人都可以告诉我我做错了什么或任何指针来实现这一点。
提前致谢。
答案 0 :(得分: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
是第一个参数,如果存在则不带引号)并在要生成的批处理文件(echo
命令块被重定向到ftpScript
文件)ftp将处理的文本文件。
答案 1 :(得分:0)
根据您的使用情况,就像
set host=%1
set uname=%2
set passwd=%3
open %host%
%username%
%passwd%
你可以使用set变量来封闭两个%var-name%,如上所示 请试一试