无法将命令行参数传递到批处理文件



我有一个批处理文件,它正在打开与服务器的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%之间来使用,如上所示请尝试

相关内容

  • 没有找到相关文章

最新更新