In Windows è presente da sempre un client FTP utilizzabile dalla riga di comando, è quindi possibile usarlo per collegarsi ad un server FTP per inviare o ricevere files da un server FTP usando questo diffuso protocollo di trasferimento dati.
Il comando è interattivo, nel senso che una volta lanciato dal prompt dei comandi presenta a video una console in cui impartire i comandi e visualizza le risposte del server FTP a cui siamo collegati, è però possibile anche rendere automatico un trasferimento FTP usando un semplice script.
La prima cosa da fare è creare il file script in formato testo usando il Blocco Note o qualsiasi altro editor di testo che possa salvare il file in formato testuale Ascii senza formattazione.
Lo script dovrà contenere esattamente gli stessi comandi che avremmo impartito nella nostra sessione FTP con il server con cui dobbiamo scambiare dati, quindi tanto per capirci sarà qualcosa di simile a questo :
open server_ftp
username
password
binary
get /path/filename.ext
quit
La prima riga (open server_ftp) apre la connessione con il nostro server FTP, possiamo mettere sia il nome del server che il suo indirizzo IP.
Nella seconda e terza riga (username, password) specifichiamo il nome utente e la relativa password da usare come login per il collegamento con il server FTP.
La quarta riga (binary) forza un trasferimento binario, in modo che possiamo scaricare dal server FTP qualsiasi tipo di file avendo la certezza che non venga troncato (cosa possibile usando la modalità Ascii che è da utilizzare SOLO per il trasferimento di files di testo).
La quinta riga (get /path/filename.ext) istruisce il nostro client FTP perchè legga dal server FTP il file che si trova nel percorso /path e che si chiama filename.ext e lo trasferisca sul pc locale.
La sesta riga infine (quit) chiude la connessione col server FTP.
Una volta salvato questo script in un file di testo, ad esempio in SCRIPT.TXT lo potremo richiamare da riga di comando con la seguente sintassi :
C:\WINDOWS\SYSTEM32\FTP.EXE -s:SCRIPT.TXT
In questo modo avremo un trasferimento automatico senza dover interagire in alcun modo con il client FTP di Windows.
Volendo è possibile inserire l’istruzione qui sopra in un file batch (.BAT) da lanciare alla bisogna da riga di comando o da un collegamento sul desktop o addirittura schedularlo a tempo, insomma con un semplice script possiamo automatizzare il trasferimento FTP verso il nostro server nel modo più semplice e veloce.
Maggiori informazioni sul client FTP di Microsoft e sui comandi supportati (sono nella colonna di sinistra) sono disponibili a questo link :
https://technet.microsoft.com/en-us/library/ff687787.aspx
10 commenti
Vai al modulo dei commenti ↓
Diego Sala
27 Dicembre 2018 at 15:08 (UTC 2) Link to this comment
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?
mario
27 Dicembre 2018 at 20:04 (UTC 2) Link to this comment
Certamente , puoi fare un file batch (.BAT) simile a questo che dovresti schedulare in esecuzione a tempo ogni tot minuti / secondi, oppure mettere in loop continuo con un GOTO :
rem :INIZIO rem togliere il rem iniziale per avere un loop continuo
C:
CD \DOWNLOADS\
DEL REPORT.OLD
IF NOT EXIST REPORT.HTML GOTO FINE
c:\windows\system32\ftp.exe -s:script.txt rem script.txt deve trovarsi in c:\downloads ed avere i comandi per il tuo ftp, cioè il trasferimento di report.html sul tuo spazio web
REN REPORT.HTML REPORT.OLD
:FINE
TIMEOUT 30
rem GOTO INIZIO rem togliere il rem iniziale per avere un loop continuo
O simile, vedi tu come personalizzarlo…..
Diego Sala
27 Dicembre 2018 at 21:46 (UTC 2) Link to this comment
grazie per la risposta.
ma quindi , non si può creare un bat, che verifichi la modifica, o la sovrascrittura, del file report.html?
se ho capito bene quello che hai scritto(non mastico molto la o ha un altro significato? programmazione), il DEL sta per delete=cancella
cancella report.old , fa partire il bat che trasferisce il file, e rinomina il nuovo report.html in report.old
e si ripete ogni 30 secondi(?)
quello che hai scritto sotto al IF sarebbe il file che hai creato per l articolo giusto?
mario
28 Dicembre 2018 at 11:20 (UTC 2) Link to this comment
Il batch di esempio controlla la presenza del file report.html, se esiste procede con l’ftp sullo spazio web e quindi rinomina il file in report.old in modo che al prossimo giro di controllo non rifaccia l’ftp se non e’ presente un nuovo file report.html in quel percorso, in pratica invece di controllare la sovrascrittura del file controlla la presenza del file, se ti serve una copia del report.html anche in locale puoi cambiare l’istruzione
REN REPORT.HTML REPORT.OLD
in
MOVE REPORT.HTML C:\ALTRADIR\
in questo modo dopo aver trasferito il file via ftp lo “sposta” invece di rinominarlo in modo che il giro successivo non lo trovi, se no continua a fare dei trasferimenti senza senso.
Confermo : DEL cancella, e si si ripete ogni 30 secondi, è la variabile TIMEOUT
Ti conviene fare delle prove, non credo che farai danni….
Gianvito
30 Novembre 2021 at 19:26 (UTC 2) Link to this comment
Ciao,
ti chiedo una mano, non so se sia fattibile come cosa.
Il mio intento è quello di creare qualcosa, uno script o altro che mandi un file txt (che si aggiorna ogni tot tempo) su ftp. Il file txt deve essere creato da un sito web che ha stringhe autoaggiornanti in .json. Cioè io visito questo sito è ho questa stringa di dati. Posso salvarla dal browser in txt o in json.
Grazie
mdede
30 Novembre 2021 at 21:53 (UTC 2) Link to this comment
La cosa è fattibile, controlli se sul suo pc Windows 10 è già presente l’utility CURL (basta eseguirla dal prompt dei comandi CMD.EXE), nel caso non fosse presente la scarichi da qui :
https://curl.se/windows/
la sintassi per scaricare un file JSON da un sito web è :
curl.exe -o file.json https://www.sito.it/percorso/file.json
una volta che ha il file per fare l’upload su un sito ftp i comandi sono (script.txt) :
open server_ftp
username
password
binary
cd /percorso
put file.json
quit
quindi può creare un file batch (.BAT) che contenga il tutto e schedularlo a tempo sulla sua macchina Windows usando l’Utilità di Pianificazione che trova nei Programmi -> Strumenti_di_Amministrazione.
Il file batch sarà qualcosa di simile a questo :
curl -o file.json https://www.sito.it/percorso/file.json
ftp -s:script.txt
Faccia qualche prova e vedrà che riuscirà nell’intento.
Saluti.
Giuseppe
7 Gennaio 2022 at 23:12 (UTC 2) Link to this comment
Se vuoi creare un file BAtch devi eseguire da prompt del dos : Copy con example.bat
Fabio
19 Maggio 2022 at 16:31 (UTC 2) Link to this comment
Ciao,
Grazie per questo articolo!
Vorrei chiederti se esiste la possibilità di creare uno script per aggiornare (update ) un file di testo .txt su ftp in
modalità “sveglia preimpostata” .
es. sono le 10.00 AM preparo il file .txt e vorrei che lo script in automatico alle ore (es. 23.00 PM ) mi carichi e sovrascriva sul server il file.
è possibile? puoi aiutarmi ? è possibile inoltre impostarlo con “più sveglie anche scavalcando la mezzanotte” ?
grazie mille in anticipo !
mdede
21 Maggio 2022 at 18:22 (UTC 2) Link to this comment
Si, basta schedulare un file batch con i comandi ftp da eseguire nella attività pianificate di Windows, per maggiori info legga qui :
https://www.ilsoftware.it/articoli.asp?tag=Utilita-di-pianificazione-Windows-cos-e-e-come-si-usa_21809
od usare qualche programma temporizzato per eseguire il batch.
Saluti
FABIO
23 Maggio 2022 at 20:11 (UTC 2) Link to this comment
grazie per la risposta.
provo a tirare giù i file .