2017-03-05 6 views
2

인증이 실패한 후 다른 암호로 다시 연결을 시도 할 수 없습니다. ERRORLEVEL이 내 코드에서 작동하지 않는 것 같습니다. 나는 잘못 될 일이 없음을 알지 못합니다. 코드는 Windows 10의 배치 파일에 있습니다.배치 파일 FTP가 ERRORLEVEL 루프를 사용하여 암호/인증을 여러 번 시도했습니다.

@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 
+1

ftp 명령은 항상 무슨 일이 있더라도 오류 레벨 0을 반환 (나는 WinSCP에의 저자 해요). 출력을 로그 파일로 캡처 한 다음 오류에 대한 로그 파일을 구문 분석해야합니다. – Squashman

+0

어떻게하면됩니까? 플레아는 답변을 게시합니다. 왜냐하면 저는 실제로 일괄 처리에 익숙하지 않기 때문에 로그를 캡처하는 방법을 알지 못합니다. – Ahm23

답변

0

Windows ftp.exe은 항상 0을 반환합니다.

당신이 할 수있는 것은 출력을 분석하고 오류를 찾는 것입니다. 그러나 그것은 꽤 신뢰할 수 없습니다.

어쨌든이 방법을하려는 경우


비록, 당신은 더 나은 더 좋은 FTP 클라이언트를 사용합니다. 조만간 ftp.exe에 문제가 생길 것입니다. 암호화, 수동 모드 또는 재귀 전송을 지원하지 않으므로 여러 가지 제한 사항이 있습니다.

Powershell 스크립트에 익숙한 사용자는 FtpWebRequest 또는 WebClient을 사용하십시오. 여기에는 수많은 예가 있습니다 (예 : Upload files with FTP using PowerShell).


그렇지 않은 경우 타사 명령 줄 FTP 클라이언트를 사용하십시오.

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

if ERRORLEVEL 1 (
    winscp.com /ini=nul /log=script2.log /command^
    "open ftp://USERNAME:[email protected]/"^
    "put C:\LOCAL\FILE /REMOTE/PATH/"^
    "exit" 
) 

참고 :

WinSCP FTP client와 예를 들어, 배치 파일처럼 보일 수 있습니다

WinSCP can also be used from PowerShell, 더욱 강력한 구현이 필요한 경우

관련 문제