windows - 通过 ftp 下载文件的批处理脚本,我该如何处理覆盖

标签 windows batch-file ftp

大家好。 我已经完成了一个批处理脚本,该脚本连接到 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 exit "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.aspxftp.exe 中没有覆盖确认。 [ Martin Prikryl ]

关于windows - 通过 ftp 下载文件的批处理脚本,我该如何处理覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480226/

相关文章:

c++ - 窗口服务停止,但进程继续运行

c++ - 缓冲到硬盘

windows - 如何将 InputBox 批量居中?

windows - 批处理 : set a variable with a filename

linux - 如何将 windows 批处理文件转换为 linux shell 脚本?

java - java中的阻塞(同步)ftp下载?

php - 根据 FTP 请求创建文件

Excel VBA 等待 Shell 完成后再继续脚本

windows - 从 Windows Batch 中的 ASCII 代码返回字符

c - Visual Studio - 找不到 ntoskrnl.exe