用户名|管道在Windows FTP命令行批处理失败

时间:2013-07-10 15:30:42

标签: windows batch-file

创建批处理文件以处理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'无法识别为内部或外部命令,可操作程序或批处理文件。”

3 个答案:

答案 0 :(得分:2)

试试这个:

@echo off &setlocal
SET "UserName=my.server.com|my.username"
SETLOCAL ENABLEDELAYEDEXPANSION
> "%Commands%" ECHO(!UserName! 
endlocal

答案 1 :(得分:1)

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

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

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

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

^^是转发的^,而^|是转发的|,因此在回显变量时您仍然拥有转义管道。

答案 2 :(得分:0)

你可以使用^ |逃避|符号

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