Batch File Upload Automatico con Windows XP

Adottando gli stratagemmi più vari, si può ottenere anche da Windows qualcosa di vagamente simile al comportamento di `cron` sui server Linux. Solo vagamente, non voglio illudere nessuno. Però si può fare. Ecco come.


Supponiamo di dover spostare ogni ora una copia del file PROVA.TXT sul seguente server FTP:


host: FTP.DOMINIO.XXX
user: UTENTE
pass: PASSWORD
destinazione: /MIA/CARTELLA/


Per prima cosa dobbiamo realizzare uno script batch in grado di aprire una connessione FTP, spostare il file e poi chiudere la connessione medesima.


Ecco lo script che ho realizzato e salvato nel file UPLOADME.BAT:

@echo off
echo user UTENTE> ftpcomm.dat
echo PASSWORD>> ftpcomm.dat
echo bin>> ftpcomm.dat
echo cd /MIA/CARTELLA/>>ftpcmd.dat
echo put %1>> ftpcomm.dat
echo quit>> ftpcomm.dat
ftp -n -s:ftpcomm.dat FTP.DOMINIO.XXX
del ftpcomm.dat

Semplice e lineare. Da linea di comando la pubblicazione del file PROVA.TXT si ottiene semplicemente con il comando:

uploadme “C:Documents and SettingsDevDocumentiPROVA.TXT”

Ora viene – per assurdo – la parte più complicata. Windows non è dotato di un vero sistema di cron, quindi dovremo ricorrere alle famigerate Operazioni pianificate (alias, Task Scheduler).


Cito testualmente da http://support.microsoft.com/kb/308569/it:


Ora, il problema un po’ più serio consiste nel fatto che l’interfaccia del Task Scheduler non offre grandi possibilità di scelta per quanto riguarda la temporizzazione: se voglio eseguire lo script ogni ora devo prima creare un’operazione pianificata con una delle temporizzazioni disponibili e poi modificarla accedendo alle sue Opzioni avanzate.
Che cosa ci sia di avanzato nell’eseguire un evento ogni 7 minuti – ad esempio – anziché una volta al giorno, questo non mi è chiaro. Mi è chiaro però che le opzioni avanzate mi permettono di impostare la ripetizione automatica dell’operazione ogni n minuti, ottenendo di fatto una rudimentale forma di `cron`.