Carica solo l'ultimo file con WinSCP


2

Sono abbastanza nuovo su WinSCP. Vorrei sapere se questa applicazione mi consentirà di inviare solo l'ultimo file modificato in una directory locale a una directory remota. Tieni presente che i contenuti di entrambe le cartelle non corrispondono in nessun momento, pertanto la sincronizzazione non è un'opzione.

Sono riuscito a stabilire la connettività e "mettere" un file sul server. Tuttavia, non sono in grado di capire come posso ottenere ciò che voglio ottenere.

Ecco i miei comandi ...

winscp.exe /console /command "option batch on" "open ftp://user:pass@remoteip:port -explicitssl -passive" "put c:\files\Completed /Test" "exit" /log=c:\winscp_log.txt

Qualsiasi aiuto è molto apprezzato...


Risposte:


3

Non sarai in grado di farlo usando WinScp da solo. Gli script non sono così complessi. Dovrai utilizzare un altro linguaggio di scripting per ottenere il file più recente.

Ad esempio questo file batch:

@echo off

for /f "delims=" %%i in ('dir /b /od c:\files\Completed\*') do set LastFile=%%i

winscp.exe /console /command "option batch on" "open ftp://user:pass@remoteip:port  -explicitssl -passive" "put c:\files\Completed\%LastFile% /Test" "exit" /log=c:\winscp_log.txt

@ shf301 - ciao, questo è un consiglio molto utile da sapere. Al momento, credo che stia facendo esattamente quello che dovrebbe fare. Tuttavia, la variabile LastFile non sembra catturare l'intero nome file se contiene spazi? Scusa la mia ignoranza, ma come posso modificarlo per catturare gli spazi nel nome del file? L'errore del registro di winscp indica "Il sistema non è in grado di trovare il file specificato" c: \ files \ Completed \ Copy "ma il nome del file effettivo è" c: \ files \ Completed \ Copy of text.txt "Apprezzalo se puoi mostrarmi come manipolare la linea "for"
molecola

Ho aggiornato la mia risposta. Per impostazione predefinita, verrà suddiviso in spazi, impostando i delimitatori su nulla ("delims =") non si spezzerà il nome del file.
shf301,

@ shf301 - grazie mille. Questo ha funzionato esattamente come volevo che fosse installato. Apprezzo il tuo aiuto. Se non è chiedere troppo, ho un altro problema di scripting su cui vorrei l'assistenza se possibile. Non voglio essere scortese e incollarlo qui prima di chiederti se eri disposto a dare un'occhiata :) Per favore fatemi sapere. Grazie!
molecola

@ shf301 - scusa la mia ignoranza, ma cosa fa %% che faccio? quando rimuovo @echo off, in realtà vedo che sta passando% i. Motivo che sto chiedendo, quando provo lo script su una macchina diversa, il ciclo for non mantiene il nome del file come ha funzionato sul mio PC. il "for" sembra ancora che divide gli spazi e non li riconosce.
molecola

1
%% i è la variabile. Le variabili nei file batch iniziano sempre con una%. Il processo batch viene rimosso una sola volta, quindi il ciclo for vede solo una singola%. Non sono sicuro del perché non funzioni però.
shf301,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.