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