Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用ERRORLEVEL循环多次尝试批处理文件FTP进行密码/身份验证_Batch File_Cmd_Error Handling_Ftp_Errorlevel - Fatal编程技术网

Batch file 使用ERRORLEVEL循环多次尝试批处理文件FTP进行密码/身份验证

Batch file 使用ERRORLEVEL循环多次尝试批处理文件FTP进行密码/身份验证,batch-file,cmd,error-handling,ftp,errorlevel,Batch File,Cmd,Error Handling,Ftp,Errorlevel,身份验证失败后,我无法尝试重新连接其他密码错误级别在我的代码中似乎不起作用。我不知道出了什么问题。该代码位于Windows 10上的批处理文件中 @echo off echo use USERNAME> ftpcmd.dat echo PASSWORD>> ftpcmd.dat ftp -n -s:ftpcmd.dat files.000webhost.com if %ERRORLEVEL% neq 0 ( goto TEST ) :TEST echo user

身份验证失败后,我无法尝试重新连接其他密码<代码>错误级别在我的代码中似乎不起作用。我不知道出了什么问题。该代码位于Windows 10上的批处理文件中

@echo off

echo use USERNAME> ftpcmd.dat
echo PASSWORD>> ftpcmd.dat


ftp -n -s:ftpcmd.dat files.000webhost.com

if %ERRORLEVEL% neq 0 (
   goto TEST
)

:TEST
echo user USERNAME> ftpcmd.dat
echo DIFFERENTPASSWORD>> ftpcmd.dat
echo prompt>>ftpcmd.dat
echo cd Test>>ftpcmd.dat
echo mput FILE PATH>> ftpcmd.dat

ftp -n -s:ftpcmd.dat FTPTHING

无论发生什么情况,Windows
ftp.exe
始终返回0

您所能做的就是解析其输出并查找错误。但这是相当不可靠的

如果仍要采用此方法,请参阅


不过,您最好使用一些更好的FTP客户端。不管怎样,
ftp.exe
迟早会遇到麻烦,因为它不支持加密、被动模式或递归传输等许多限制

如果您熟悉PowerShell,请使用PowerShell脚本中的
FtpWebRequest
WebClient
。例如,这里有许多例子


如果没有,请使用第三方命令行FTP客户端

例如,您的批处理文件可能如下所示:

@echo off
winscp.com /ini=nul /log=script.log /command ^
  "open ftp://USERNAME:PASSWORD@ftp.example.com/" ^
  "put C:\LOCAL\FILE /REMOTE/PATH/" ^
  "exit"

if ERRORLEVEL 1 (
  winscp.com /ini=nul /log=script2.log /command ^
    "open ftp://USERNAME:DIFFERENTPASSWORD@ftp.example.com/" ^
    "put C:\LOCAL\FILE /REMOTE/PATH/" ^
    "exit"
)
参考资料:

  • )
  • )
,如果您想要更健壮的实现


(我是WinSCP的作者)

ftp命令总是返回错误级别0,无论发生什么情况。您必须将输出捕获到日志文件中,然后分析日志文件中的错误。我该如何做?请发布一个答案,因为我是批处理新手,我不知道如何捕获日志。