Validacion de envio y recepcion via ftp con bat

Iniciado por dj kuzmar, 22 Febrero 2012, 04:42 AM

0 Miembros y 1 Visitante están viendo este tema.

dj kuzmar

Amigos acudo a uds ya que he realizado un bat, que hace envio y rescate en forma automatica via ftp, he querido validar si hay error, pero no siempre me funciona, cuando no se puede conectar envia primero el mensaje desconectado, como que valida antes que el ftp se ejecute, aca le envio el codigo:

@echo off
setlocal enabledelayedexpansion


rem  Se saca fecha de proceso en este caso de tarde


for /f "delims=" %%a in (C:\ctm_internacional\fecha_aaaammdd_tarde.txt) do (
set fecha=%%a
)

rem **************************************************
rem preparamos variables y rutas

set rutares=c:\ctm_internacional\Archivos_RES\
set rutain=
set rutain2=
set rutain3=
set rutaout=c:\ctm_internacional\paso\CANJE_2\
set rutaout2=\\servidor\\Core_Entrada\%fecha%\FCC_%fecha%
set rutaout3=\\servidor\\Core_Entrada\%fecha%\Sigir_%fecha%


rem **************************************************
rem Lista canje2 fcc
echo CA348009ENT> lista_canje2_f.txt

rem **************************************************
rem Lista canje2 sigir


rem **************************************************


rem **************************************************
rem *** PASO 1
rem *** Parametros para canje2 rescate ( trae interfaz )

for /f "delims=" %%p in (C:\ctm_internacional\canje2_paso1.txt) do (
set paso1=%%p
)


if %paso1% == 0 (

echo interatm> C:\ctm_internacional\canje2_tra.txt
echo manque04>> C:\ctm_internacional\canje2_tra.txt
echo cd salida>> C:\ctm_internacional\canje2_tra.txt
echo ascii >> C:\ctm_internacional\canje2_tra.txt
echo lcd C:\ctm_internacional\paso\CANJE_2 >> C:\ctm_internacional\canje2_tra.txt
echo mget CR009%fecha%   >>  C:\ctm_internacional\canje2_tra.txt
echo bye >> C:\ctm_internacional\canje2_tra.txt


rem *************************
rem rescatando interfaz


ftp -i -v -s:C:\ctm_internacional\canje2_tra.txt 163.250.1.7  >  C:\ctm_internacional\canje2_tra.log

findstr /i "Desconectado" C:\ctm_internacional\canje2_tra.log

  if !errorlevel! == 0 (
   echo 0 > C:\ctm_internacional\canje2_paso1.txt
   echo error en paso1 >> C:\ctm_internacional\canje2_tra.log
   type C:\ctm_internacional\canje2_tra.log   
   goto error
 
   echo 0 > C:\ctm_internacional\canje2_paso1.txt

GOTO END

:error

echo "ERROR en el envio o rescate estado DESCONECTADO O Conexion Cerrada Por el host" > C:\ctm_internacional\canje2_err.log
echo ***************************************************************************

type C:\ctm_internacional\canje2_err.log

goto end

:END
endlocal
exit

Eleкtro

#1
Hola.

1 - Usa las respectivas etiquetas de código cuando postees un bat o los moderadores te regañarán.

2 - Estás expandiendo sin motivo.
Borra "Setlocal enabledelayedexpansion" y "END LOCAL" del script.

3 - No estás cerrando el IF con paréntesis, Falta 1.
If "cadena" ("cadena")




Código (dos) [Seleccionar]
@echo off

Find /I "Desconectado" "C:\ctm_internacional\canje2_tra.log" >Nul

If %Errorlevel% EQU 0 (
Echo 0 >> "C:\ctm_internacional\canje2_paso1.txt"
Echo Error en paso1 >> "C:\ctm_internacional\canje2_tra.log"
Type "C:\ctm_internacional\canje2_tra.log" | MORE /E /C
Goto :Error
) ELSE (Goto :END)

:Error
Echo ERROR en el envio o rescate estado DESCONECTADO O Conexion Cerrada Por el host >> "C:\ctm_internacional\canje2_err.log"
Echo ****************************************************************************** >> "C:\ctm_internacional\canje2_err.log"
Type "C:\ctm_internacional\canje2_err.log" | MORE /E /C

:END
Pause
Exit


Aunque no se si se solucionará el problema porque no he probado el ftp.
Salu2.