2016-07-20 5 views
2

Guten Tag alles. Ich habe ein Batch-Skript erstellt, das eine Verbindung zu einem FTP herstellt und eine Datei am selben Speicherort der BAT-Datei herunterlädt. Alles funktioniert gut, gibt es jetzt eine Möglichkeit, nach Dateiüberschreibungsberechtigungen zu fragen? Ich meine, wenn der Benutzer bereits eine Datei auf die gleiche Weise benannt hat, ist es möglich, das Überschreiben zu verhindern und ihn zu fragen, was zu tun ist? tatsächlich ist der Code:Batch-Skript zum Herunterladen einer Datei über FTP, wie kann ich mit dem Überschreiben umgehen

@echo off 
echo user MYUSERNAME> ftpcmd.dat 
echo MYPASSWORD>> ftpcmd.dat 
echo bin>> ftpcmd.dat 
echo cd /www.website.com/>>ftpcmd.dat 
echo get afile.txt>> ftpcmd.dat 
echo quit>> ftpcmd.dat 
ftp -n -s:ftpcmd.dat ftp.website.com 
del ftpcmd.dat 
+2

Verwenden Sie 'if exit" afile.txt "' in Ihrem Batch-Skript vor der 'ftp'-Befehlszeile? dann können Sie den Benutzer bedingt mit "Wahl" auf Ja oder Nein zum Überschreiben hinweisen ... – aschipfl

+0

oh, das ist gut, ich werde ein bisschen mehr darüber recherchieren, danke. –

Antwort

3

Sie können if exist "afile.txt" im Voraus verwenden und choice verwenden die Benutzer entscheiden zu lassen, was zu tun ist:

@echo off 
if exist "afile.txt" (
    choice /C YN /M "Overwrite 'afile.txt'? " 
) else (
    > nul ver & rem (clear `Errorlevel`) 
) 
if not ErrorLevel 2 (
    > "ftpcmd.dat" (
     echo user MYUSERNAME 
     echo MYPASSWORD 
     echo bin 
     echo cd /www.website.com/ 
     echo get afile.txt 
     echo quit 
    ) 
    ftp -n -s:ftpcmd.dat ftp.website.com 
    del "ftpcmd.dat" 
) 

Da es jedoch kein -i Schalter in der Befehlszeile ftp ist und die interaktive prompt Modus sollte Ich bin davon ausgegangen, die ftp Befehl würde den Benutzer trotzdem auffordern ...
Korrektur-Update: Der "interaktive Modus" bedeutet, dass die mget und mput werden den Benutzer bitten, die Übertragung jeder übereinstimmenden Datei zu bestätigen, unabhängig davon, ob sie existiert oder nicht. Siehe technet.microsoft.com/en-us/library/bb490670.aspx. Es gibt keine Überschreibbestätigungen in ftp.exe. [Martin Prikryl]

2

die if exist command können Sie testen, ob die lokale Datei bereits vor der Übertragung vorhanden ist.

Wenn es existiert, ask an user for confirmation.

@echo off 

if not exist afile.txt goto download 

:ask 
echo Overwrite? 
set INPUT= 
set /P INPUT=Y/N: %=% 
If /I "%INPUT%"=="Y" goto download 
If /I "%INPUT%"=="N" exit 
echo Incorrect input 
goto ask 

:download 
... 
ftp -n -s:ftpcmd.dat ftp.website.com 

Obwohl für eine langfristige Lösung, besser Sie Powershell verwenden, statt diese Datei in einer Batch-Hacking.

+0

sieht wirklich gut aus. Vielen Dank! –

Verwandte Themen