核心概念
无论使用哪种方法,FTP 自动删除文件的核心逻辑通常包括以下步骤:

- 连接到 FTP 服务器:使用主机名、用户名和密码建立连接。
- 导航到目标目录:进入你想要删除文件所在的文件夹。
- 列出文件:获取该目录下所有文件的列表。
- 筛选文件:根据你的条件(如文件名、修改时间、大小等)找到需要删除的特定文件。
- 逐个删除文件:对筛选出的文件执行
DELE(删除) 或RMD(删除目录) 命令。 - 关闭连接:完成操作后,安全地断开与服务器的连接。
使用 Windows 命令提示符 (CMD) / PowerShell 脚本
这是在 Windows 环境下最直接、最无需安装额外软件的方法,我们将使用 ftp.exe 这个内置命令行工具。
准备工作:创建一个脚本文件
我们需要一个包含所有 FTP 命令的文本文件,然后让 ftp.exe 执行这个文件。
commands.txt 文件内容示例:
假设我们要删除 C:\local_files 目录中所有已上传到 FTP 服务器 /upload/ 目录下的文件。

# 这是注释,ftp.exe 会忽略以 # 开头的行 # 1. 登录到 FTP 服务器 open ftp.yourserver.com your_username your_password # 2. 进入目标目录 cd /upload/ # 3. 删除特定文件 (名为 report_20251027.txt 的文件) delete report_20251027.txt # 4. 或者,如果你想删除所有以 ".old" 结尾的文件 # mdelete *.old (mdelete 表示多文件删除) # 5. 可选:查看当前目录下的文件列表以确认 ls # 6. 退出 FTP 会话 bye
编写批处理脚本 (.bat) 或 PowerShell 脚本 (.ps1)
A. 使用 CMD 批处理脚本 (.bat)
这个脚本会调用 ftp.exe 并让它执行 commands.txt。
@echo off echo 正在连接到 FTP 服务器并删除文件... REM 设置 ftp.exe 的路径,通常在 system32 目录下,所以可以直接调用 REM -s: 参数指定要执行的命令脚本文件 ftp -s:commands.txt echo FTP 操作完成。 pause
如何使用:
- 将上面的 FTP 命令保存为
commands.txt。 - 将上面的批处理命令保存为
delete_ftp_files.bat。 - 将两个文件放在同一目录下,然后双击运行
delete_ftp_files.bat。
B. 使用 PowerShell 脚本 (.ps1)

PowerShell 提供了更强大的功能和更简洁的语法,推荐使用。
# --- 配置信息 ---
$server = "ftp.yourserver.com"
$user = "your_username"
$pass = "your_password"
$remoteDir = "/upload/"
$fileToDelete = "report_20251027.txt" # 要删除的文件名
# 创建 FTP WebRequest
$uri = "ftp://$server$remoteDir$fileToDelete"
$ftpRequest = [System.Net.FtpWebRequest]::Create($uri)
$ftpRequest.Credentials = New-Object System.Net.NetworkCredential($user, $pass)
$ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]::DeleteFile
try {
# 发送请求并获取响应
$response = $ftpRequest.GetResponse()
$response.Close()
Write-Host "文件 '$fileToDelete' 已成功删除。" -ForegroundColor Green
}
catch {
Write-Host "删除文件时出错: $_" -ForegroundColor Red
}
如何使用:
- 将上述代码保存为
Delete-File.ps1。 - 在 PowerShell 中,你需要先执行
Set-ExecutionPolicy RemoteSigned一次来允许运行本地脚本(以管理员身份运行 PowerShell)。 - 在 PowerShell 窗口中,导航到脚本所在目录,然后运行
.\Delete-File.ps1。
使用第三方图形化 FTP 客户端 (如 FileZilla)
FileZilla 是一款非常流行的免费 FTP 客户端,它支持“站点管理器”和“命令队列”功能,可以实现半自动化删除。
使用站点管理器自动登录
- 打开 FileZilla。
- 进入 文件 -> 站点管理器 (或按
F2)。 - 新建一个站点,填写你的主机名、用户名、密码和端口。
- 点击“连接”,FileZilla 会自动保存你的凭据,下次点击该站点名即可快速登录。
使用命令队列自动删除
-
登录后,在左侧本地文件面板找到你的本地文件(
C:\local_files),在右侧远程文件面板导航到目标目录(/upload/)。 -
同步删除:这是最强大的功能。
- 在左侧面板选中本地文件夹
C:\local_files。 - 在右侧面板选中远程文件夹
/upload/。 - 点击菜单 同步 -> 同步浏览。
- 在弹出的窗口中,选择 “在远程删除本地不存在的文件”。
- 点击“确定”,FileZilla 会比较两个目录,并生成一个删除队列,显示哪些文件将被删除,你可以检查这个队列,确认无误后,点击“处理队列”即可执行。
- 在左侧面板选中本地文件夹
-
手动创建队列:
- 在远程文件面板中,手动选中一个或多个你想要删除的文件。
- 右键点击,选择 “添加到队列”。
- 在底部的队列窗口中,右键点击队列中的任务,选择 “执行”。
使用专业文件同步/备份软件 (如 FreeFileSync, WinSCP)
这类软件专门为自动化文件同步和备份设计,是处理此类任务的“利器”。
使用 WinSCP (推荐)
WinSCP 是一个开源的 SFTP 客户端和 FTP 客户端,支持强大的脚本功能。
-
安装 WinSCP。
-
创建脚本文件 (
delete_script.txt):# 定义会话 option echo on open sftp://your_username:your_password@ftp.yourserver.com:22/ -hostkey="ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" # 进入目录 cd /upload/ # 删除文件 rm report_20251027.txt # 关闭连接 close exit
注意:现代服务器推荐使用 SFTP(基于 SSH 的文件传输),它比 FTP 更安全,WinSCP 默认支持 SFTP。
-
使用命令行执行脚本: 打开命令提示符,运行:
"C:\Program Files (x86)\WinSCP\WinSCP.com" /script=delete_script.txt
你还可以使用
/console参数来获取更详细的输出,或者/log=logfile.txt来记录日志。
使用 FreeFileSync
FreeFileSync 是一个开源的文件夹同步工具,可以设置“左->右”或“右->左”的同步策略。
-
配置左右两侧:
- 左侧:本地文件夹
C:\local_files。 - 右侧:FTP 服务器地址,输入
ftp://your_username:your_password@ftp.yourserver.com/upload/。
- 左侧:本地文件夹
-
设置同步方向:
- 在中间的同步设置中,选择 “镜像” (Mirror)。
- 这意味着它会将右侧(服务器)的内容与左侧(本地)保持一致,如果本地没有某个文件,服务器上的对应文件就会被删除。
-
运行并保存为批处理任务:
- 点击“比较”和“同步”来预览和执行。
- 如果设置正确,你可以保存这个同步配置。
- 在 FreeSCP 的安装目录下,会有一个
FreeFileSync.exe,你可以通过命令行调用它来自动执行已保存的配置文件 (.ffs_batch)。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| CMD/PowerShell 脚本 | - Windows 内置,无需安装 - 灵活可控,适合集成到其他自动化流程 |
- CMD 语法较繁琐 - PowerShell 需要学习基本语法 |
系统管理员、需要深度集成到 Windows 任务计划或 CI/CD 流程中。 |
| FileZilla | - 图形化界面,直观易用 - 功能强大,支持同步删除 |
- 需要手动点击“处理队列”才能执行,非完全自动化 | 临时任务、手动操作、需要可视化确认的场景。 |
| 专业软件 (WinSCP/FreeFileSync) | - 功能最专业、最稳定 - 内置强大的自动化和调度功能 - 支持更安全的 SFTP |
- 需要额外安装软件 | 长期、稳定、需要复杂同步策略的自动化任务。 |
我的建议:
- 如果你是开发者或系统管理员,并且希望在 Windows 环境下进行自动化,PowerShell 脚本是最佳选择,它功能强大、现代且与 Windows 系统集成得非常好。
- 如果你只是偶尔需要删除一些文件,并且希望过程简单、可追溯,使用 FileZilla 的站点管理和命令队列非常方便。
- 如果你需要一个健壮、可靠的自动化文件同步解决方案,并且愿意安装一个专业的工具,WinSCP 或 FreeFileSync 是不二之选,尤其是当你的需求可能变得更复杂时。
