2017-03-05 8 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を返します。出力をログファイルに取り込み、エラーのログファイルを解析する必要があります。 – Squashman

+0

どうすればいいですか?私は非常に実際にバッチに新しいので、私はログをキャプチャする方法を手がかりがないので、答えを投稿してください。 – Ahm23

答えて

0

Windows ftp.exeは、常に0を返します。

可能なことは、出力を解析してエラーを探すことだけです。しかし、それはかなり信頼できません。

あなたはとにかく、このアプローチを取りたい場合は、


けれども、あなたはより良いいくつかのより良いFTPクライアントを使用します。間もなく、ftp.exeで問題に遭遇します。暗号化、パッシブモード、または再帰的転送をサポートしていないため、他の多くの制限があります。

Powershellスクリプトに慣れている場合は、FtpWebRequestまたはWebClientを使用してください。ここには多くの例があります(例:Upload files with FTP using PowerShell)。


そうでない場合は、サードパーティのコマンドラインFTPクライアントを使用してください。 WinSCP FTP clientと例えば

、あなたのバッチファイルは次のようになります。

@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 can also be used from PowerShellさらに堅牢な実装が必要な場合。

(私はWinSCPのの著者です)