none
File batch non funziona con lo schedulatore RRS feed

  • Domanda

  • Salve a tutti,

    Comprendo che il post ormai è vecchio di anni ma io ho lo stesso identico problema (non risolto)

    Ho creato un file batch che preleva dei file da un percorso FTP e li copia nella mia root.

    Se lo lancio manualmente funziona alla grande ma se lo schedulo non avviene lo start.

    I permessi ci sono tutti.

    Ho letto che bisogna inserire i percorsi assoluti...qualcuno può indicarmi come?

    Vi posto il codice:

    open "indirizzo host"
    user
    password
    binary
    get /web/DownloadOrders1.xml
    get /web/DownloadOrders2.xml
    get /web/DownloadOrders3.xml
    get /web/DownloadOrders4.xml
    C:\WINDOWS\SYSTEM32\FTP.EXE  -s:ftp.miobat.bat
    quit

    mercoledì 20 dicembre 2017 08:55

Risposte

  • il codice è "sporco", sarebbe meglio riscriverlo in questo modo

    @echo off
    :
    set FTPFILE=%TEMP%\ftp.txt
    set LOGFILE=%TEMP%\ftp.log
    :
    echo open ftp.example.com >%FTPFILE%
    echo user >>%FTPFILE%
    echo password >>%FTPFILE%
    echo binary >>%FTPFILE%
    echo get /web/DownloadOrders1.xml >>%FTPFILE%
    echo get /web/DownloadOrders2.xml >>%FTPFILE%
    echo get /web/DownloadOrders3.xml >>%FTPFILE%
    echo get /web/DownloadOrders4.xml >>%FTPFILE%
    echo quit >>%FTPFILE%
    :
    ftp -s:%FTPFILE% >%LOGFILE% 2>&1
    :
    del %FTPFILE%
    exit

    il problema, a parte il file batch abbastanza "sballato" è che se non impostata nel job schedulato, la cartella dalla quale viene lanciato il batch è "c:\windows\system32" e siccome sospetto che il tuo file bat risieda in un'altra cartella, il comando ftp non trova il file passato con il parametro "-s"

    il batch di cui sopra, invece, crea il file comandi "al volo" nella cartella dei files temporanei (per l'account con il quale viene eseguito il batch) ed usa quel file per avviare ftp, al termine il file viene cancellato e nella cartella temporanea resta soltanto il log delle operazioni (che viene sovrascritto ogni volta)

    ciao


    mercoledì 20 dicembre 2017 09:35

Tutte le risposte

  • il codice è "sporco", sarebbe meglio riscriverlo in questo modo

    @echo off
    :
    set FTPFILE=%TEMP%\ftp.txt
    set LOGFILE=%TEMP%\ftp.log
    :
    echo open ftp.example.com >%FTPFILE%
    echo user >>%FTPFILE%
    echo password >>%FTPFILE%
    echo binary >>%FTPFILE%
    echo get /web/DownloadOrders1.xml >>%FTPFILE%
    echo get /web/DownloadOrders2.xml >>%FTPFILE%
    echo get /web/DownloadOrders3.xml >>%FTPFILE%
    echo get /web/DownloadOrders4.xml >>%FTPFILE%
    echo quit >>%FTPFILE%
    :
    ftp -s:%FTPFILE% >%LOGFILE% 2>&1
    :
    del %FTPFILE%
    exit

    il problema, a parte il file batch abbastanza "sballato" è che se non impostata nel job schedulato, la cartella dalla quale viene lanciato il batch è "c:\windows\system32" e siccome sospetto che il tuo file bat risieda in un'altra cartella, il comando ftp non trova il file passato con il parametro "-s"

    il batch di cui sopra, invece, crea il file comandi "al volo" nella cartella dei files temporanei (per l'account con il quale viene eseguito il batch) ed usa quel file per avviare ftp, al termine il file viene cancellato e nella cartella temporanea resta soltanto il log delle operazioni (che viene sovrascritto ogni volta)

    ciao


    mercoledì 20 dicembre 2017 09:35
  • SUPER OT:  OBI WAN??? Ma sul serio?? Quindi come la Forza sei tornato?? O è solo per l'uscita del nuovo guerre stellari?? come stai??

    A.

    mercoledì 20 dicembre 2017 10:31
    Moderatore
  • Ciao :)

    Sono di passaggio, siccome "ettorpa" si è agganciato ad una vecchia discussione alla quale avevo partecipato, il forum mi ha inviato una notifica in email e così, visto che avevo due minuti, ho deciso di dare un'occhiata... ed ho risposto :)

    mercoledì 20 dicembre 2017 10:49