0

在创建批处理文件来处理 FTP 命令时,当 ftp/batch 出现管道问题时,如何输入用户名。

注意:主机和用户名中的点/句点是有意的。

示例

REM Connection information:
SET Server=my.server.com
SET UserName=my.server.com|my.username
SET Password=password


IF NOT EXIST "%TEMP%\FTPCommands" MD "%TEMP%\FTPCommands"
SET Commands="%TEMP%\FTPCommands\SendToFTP_commands.txt"


rem -- add username and password to commands file
ECHO %UserName%> %Commands%
ECHO %Password%>> %Commands%

FTP -d -i -s:%Commands% %Server%

错误

“'my.username' 不是内部或外部命令、可运行程序或批处理文件。”

4

3 回答 3

2

尝试这个:

@echo off &setlocal
SET "UserName=my.server.com|my.username"
SETLOCAL ENABLEDELAYEDEXPANSION
> "%Commands%" ECHO(!UserName! 
endlocal
于 2013-07-10T15:43:50.713 回答
1

将变量定义放在双引号之间,并使用 a 转义管道^

set "UserName=my.server.com^|my.username"

如果没有双引号,您需要两次转义管道:定义时一次,回显变量时一次:

set UserName=my.server.com^^^|my.username"

^^is an escaped ^and ^|is an escaped |,因此在回显变量时仍然有一个转义管道。

于 2013-07-10T15:46:47.730 回答
0

你可以使用^| 逃离| 象征。

更新以更正转义字符,正如ansgar Dos 指出的那样对待| 作为管道符号并尝试将一个命令的输出作为另一个命令的输入。因此你的错误。因为管道符号在那里,所以批处理文件解释器期望 my.server.com 是一个程序,因此您正试图将其输出通过管道传输到 my.username。

于 2013-07-10T15:37:11.077 回答