Post a reply

Options
Add an Attachment

If you do not want to add an Attachment to your Post, please leave the Fields blank.

(maximum 10 MB; please compress large files; only common media, archive, text and programming file formats are allowed)

Options

Topic review

martin

With your example I get:

Connecting to 120.1.1.1 ...
Connection failed.
No connection could be made because the target machine actively refused it.
Connection failed.
Exit code: 1
Max roundtrip: 16
1

I have sent you an email with a debug version of WinSCP to the address you have used to register on this forum.
Prostagma

I made some other tests with and without using the caret symbol, modifying the
-command
to make it simple as possible like this :
"%repdev%\WinSCP.com" /log="%replog%\FTP_%soc%_%tagdate%.log" /loglevel=2 /command "open ftp://root:XXXXXXX@120.1.1.1/"

Next line of the script is only
echo %ERRORLEVEL%


And I get this output :
Connecting to 120.1.1.1 ...
Connection failed.
Timeout detected. (control connection)
Connection failed.
Exit code: 1
Max roundtrip: 16
0
Prostagma

With that simple script, using my own directories in the %repdev% and %TEMP% variables, I get the same output :
Exit code: 0
Max roundtrip: 0
0
Unknown command 'error'.
Exit code: 1
Max roundtrip: 0
1
martin

Can you start with a trivial (and exact) example like this one:
@echo off
set repdev=C:\path\to\winscp
"%repdev%\WinSCP.com" /log="%TEMP%\dummy.log" /loglevel=2 /command "exit"
echo %ERRORLEVEL%
"%repdev%\WinSCP.com" /log="%TEMP%\dummy.log" /loglevel=2 /command "error"
echo %ERRORLEVEL%

I get this:

Exit code: 0
Max roundtrip: 0
0
Unknown command 'error'.
Exit code: 1
Max roundtrip: 0
1
Prostagma

I got the Exit code: 1 in my output, though the if seems to be evaluated with a ERRORLEVEL=0 cause it doesn't enter the ERREUR_FTP subroutine.

batch abort
Connecting to 120.1.1.1 ...
Connection failed.
Timeout detected. (control connection)

Connection failed.
Exit code: 1
Max roundtrip: 16
Commande ECHO d‚sactiv‚e.

You can see the complete output in attached file.

I even changed my code to force the script to enter my ERREUR_FTP subroutine and it worked, confirming that %ERRORLEVEL%=0
if %ERRORLEVEL% EQU 0 GOTO :ERREUR_FTP

and here is the output obtained:
batch           abort     

Connecting to 120.1.1.1 ...
Connection failed.
Timeout detected. (control connection)

Connection failed.
Exit code: 1
Max roundtrip: 0

generating this log (sorry for the French) showing it's entering the :ERREUR_FTP subroutine
ENVOI FICHIER SFTP 4SAISONS 

Probleme lors de l'envoi FTP
le programme ne s'est pas terminé correctement
martin

Re: Issues catching return code and %ERRORLEVEL%

Indeed, it seems that the exit code is not logged in this scenario. I'll look into it.

Though the exit code is returned correctly for me. If I test your batch file, I get:

batch abort
Connecting to 120.1.1.1 ...
Connection failed.
No connection could be made because the target machine actively refused it.

Connection failed.
Exit code: 1
Max roundtrip: 0
The system cannot find the batch label specified - ERREUR_FTP

So the if is evaluated correctly.
What output do you get?
Guest

Re: Issues catching return code and %ERRORLEVEL%

Sure then, here it is.
martin

Re: Issues catching return code and %ERRORLEVEL%

Please attach a complete log file.
Prostagma

Issues catching return code and %ERRORLEVEL%

Hi Martin and all,

I got myself into trouble trying to catch the return code from winscp.com (latest version 5.18.5).

My script works fine but when I'm trying to make the winscp part fail (for testing purposes, @IP is voluntarily a false one), it indeed fails (connection fails) but still returning %ERRORLEVEL%=0

My script looks like this:
"%repdev%\WinSCP.com" ^
/log="%replog%\FTP_%soc%_%tagdate%.log" /loglevel=2* /logsize=10*10M ^
/command ^
       "option batch abort" ^
       "open ftp://root:XXXXXXX@120.1.1.1/" ^
       "cd /ud/tmp/LBE" ^
       "put -transfer=binary PDF%soc%.001" ^
       "put -transfer=binary PDF%soc%.flw" ^
       "exit"
if %ERRORLEVEL% NEQ 0 GOTO :ERREUR_FTP

I'm guessing it's because winscp itself returns a 0, because when i'm looking at the log, there is no "Script : Exit code: X" as you can see.

I tried the same using /script with a txt instead of /command but the result is the same.

Any ideas what's wrong with my script? Or am I misunderstanding the way WinSCP deals with failed connection?

Thanks.