簡體   English   中英

批處理腳本以通過ftp下載文件,如何處理覆蓋

[英]batch script to download a file via ftp, how can I handle the overwrite

大家好。 我已經完成了一個批處理腳本,該腳本連接到FTP並在.bat文件的相同位置下載文件。 一切正常,現在,是否有辦法“詢問文件覆蓋權限”? 我的意思是,如果用戶已經具有以相同方式命名的文件,是否可以防止覆蓋並詢問他該怎么做? 該代碼實際上是:

@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

您可以預先使用if exist "afile.txt" ,並使用choice讓用戶決定要執行的操作:

@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"
)

但是,由於 ftp命令行中沒有 -i開關,並且交互 prompt模式應默認為打開狀態,因此我認為 ftp命令仍然會提示用戶...
糾正性更新: “交互模式”意味着mgetmput將要求用戶確認每個匹配文件的傳輸,無論是否存在。 請參閱technet.microsoft.com/en-us/library/bb490670.aspx ftp.exe中沒有覆蓋確認。 [ 馬丁·普里克里Martin Prikryl) ]

if exist傳輸之前本地文件已經存在,請使用if exist命令進行測試。

如果存在, 請詢問用戶確認

@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

盡管對於長期解決方案,您最好使用PowerShell,而不要在批處理文件中修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM