Trasferimento FTP automatico di file(s) tramite batch

Spesso a lavoro mi capita di dover inviare o ricevere tramite il protocollo FTP uno o più file in maniera rapida, con un click, anzi doppio click. Nel caso di utilizzo di un sistema operativo Windows una soluzione consiste nell’utilizzo di file batch. Per adempiere il nostro lavoro dobbiamo creare due file. Il primo file conterrà i comandi da inviare al server ftp che convenzionalmente chiameremo cmd.ftp, mentre il secondo file sarà il file batch vero e proprio, che eseguirà i comandi iterativamente e che chiameremo ftptransfer.bat

Attenzione non chiamate mai un batch con il nome di un programma che viene richiamato al suo interno, cioè non chiamate per esempio il file batch ftp.bat se all’interno richiamerete il programma ftp, altrimenti rischierete di creare un’esecuzione ricorsiva del batch fino all’esaurimento delle risorse!

Andiamo dunque a vedere il primo file, quello dei comandi ftp:

File cmd.ftp:

1
2
3
4
5
6
7
8
user username password
cd /path
bin
hash
get example1.dat
put example2.dat
disconnect
bye

La prima riga invia il comando username che ha come parametri l’username e la password da utilizzare per l’autenticazione. I comandi dalla 3a alla 4 riga non sono obbligatori, nell’ordine eseguono un cd per un cambio di directory sul file system remoto, bin abilita il trasferimento binario, hash permette la visualizzazione di una sorta di progress bar, il comando get server per scaricare sul computer locale un file presente sul server FTP remoto, mentre il suo antagonista put fa l’esatto opposto, cioè invia un file locale sul server remoto. Infine abbiamo disconnect che chiude la connessione con il server ftp, e bye che chiude il programma client ftp.

Veniamo adesso al file batch:

File ftptransfer.bat:

1
2
3
4
5
6
7
8
9
@ECHO OFF
echo --------------------------
echo Trasferimento FTP avviato
echo --------------------------
ftp -n -s:cmd.ftp indirizzo_server
echo ---------
echo F I N E
echo ---------
pause

Qui non c’è molto da dire se non i vari comandi batch echo che stampano su console delle informazioni, ed il comando ftp seguito da alcuni parametri:
-n disabilita l’autoconnessione dopo la connessione iniziale.
-s:nomefile specifica un file di testo contenente i comandi FTP.

Ecco un esempio:

Da notare il carattere “cancelletto” (hash mark) utilizzato come progress bar dell’avvenuto trasferimento.

Be Sociable, Share!
Precedente Integrare i driver SATA su un nuovo CD di Windows XP Successivo Squid proxy: panoramica, installazione e configurazione

6 commenti su “Trasferimento FTP automatico di file(s) tramite batch

  1. Davide il said:

    Grande soluzione! Funziona! Mi dà problemi sul .ftp quando imposto l’esecuzione del .bat dall’Utilità di Pianificazione di Win..
    Consigili??

  2. Davide che problema ti da ? Prova a verificare la directory di lavoro, quando si utilizzano le operazioni pianificate la directory corrente non è detto che sia quella dove si trovano i file. Potresti per esempio mettere la path assoluta (p.e. c:\programmi\) per il file cmd.ftp all’interno del file .bat

  3. diego il said:

    ciao, provo a spiegarti ciò che mi servirebbe:
    ho creato un file di excel, per tenere sott’occhio le operazioni di trading.
    Il software che utilizzo per il trading, genera un report, in formato html.
    il file di excel estrapola i dati da questo REPORT, e fa i suoi calcoli.
    Io vorrei, che questo REPORT, venisse salvato, in uno spazio web (quando lo creo, mi viene salvato ad esempio nella cartella Downloads, nel mio pc, e da qui in automatico vorrei che venisse spostato nello spazio web(non intendo cloud, ma nel server di un sito creato su altervista.)).
    in parole povere la mia domanda è:
    si può usare il tuo script, in modo che venga attivato automaticamente , quando viene sovrascritto, un certo file?

  4. Si può usare lo script per inviare il file html su un’area ftp, ma non all’evento di modifica del file, per queste esigenze ti serve un programma che monitorizza le eventuali modifiche al file in questione. In questo caso ti consiglio di provare “free file Sync”, è gratuito e sincronizza anche in ftp. In alternativa c’è il CuteFtp ma è a pagamento.

Lascia un commento

*

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.