Principale utente con più risposte
File batch non funziona con lo schedulatore

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
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
- Modificato ObiWan mercoledì 20 dicembre 2017 09:35
- Proposto come risposta Alessandro-VanniniMVP, Moderator mercoledì 20 dicembre 2017 10:38
- Contrassegnato come risposta GastoneCanaliModerator venerdì 29 dicembre 2017 14:51
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
- Modificato ObiWan mercoledì 20 dicembre 2017 09:35
- Proposto come risposta Alessandro-VanniniMVP, Moderator mercoledì 20 dicembre 2017 10:38
- Contrassegnato come risposta GastoneCanaliModerator venerdì 29 dicembre 2017 14:51
-
-
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 :)