You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:从FTP下载文件至每日日期命名文件夹的代码实现

批处理FTP下载脚本的验证与完善方案

我看了你的批处理脚本,发现几个需要调整的细节,同时给你优化了方案,确保脚本更稳定、通用,适配不同系统环境:

原脚本存在的问题

  • 日期格式依赖系统区域:date /T的输出会因系统语言/区域设置不同(比如美式MM/DD/YYYY和中式YYYY/MM/DD)导致文件夹命名混乱,甚至创建失败
  • 时间变量语法错误:你的时间赋值语句引号位置错误,会生成带多余引号的文件夹名称,不符合预期
  • FTP命令调用方式错误:批处理中直接写FTP open ...无法正确执行,FTP需要通过输入重定向或脚本文件的方式传递命令

改进后的完整脚本

@echo off
setlocal enabledelayedexpansion

:: 获取标准化的日期时间(避免区域差异)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "dt=%%a"
set "datestr=!dt:~0,4!-!dt:~4,2!-!dt:~6,2!"
set "timestr=!dt:~8,2!-!dt:~10,2!"

:: 创建目标文件夹(格式:YYYY-MM-DD HH-MM)
set "targetDir=C:\%datestr% %timestr%"
mkdir "%targetDir%" 2>nul

:: 生成临时FTP脚本文件
set "ftpScript=%temp%\ftp_download.txt"
echo open 127.0.0.1 > "%ftpScript%"
echo admin >> "%ftpScript%"
echo 123 >> "%ftpScript%"
echo cd /ftpsrv >> "%ftpScript%"
echo lcd "%targetDir%" >> "%ftpScript%"
echo prompt >> "%ftpScript%"
echo mget *.* >> "%ftpScript%"
echo quit >> "%ftpScript%"

:: 执行FTP下载
ftp -s:"%ftpScript%"

:: 清理临时脚本
del "%ftpScript%"

endlocal
echo 下载完成,文件已保存至 %targetDir%

关键优化说明

  • 标准化日期时间:用wmic os get localdatetime获取系统统一格式的时间字符串(YYYYMMDDHHMMSS...),拆分后生成YYYY-MM-DD的日期和HH-MM的时间,彻底避免区域差异问题
  • 合法文件夹名称:用短横线替代冒号等非法字符,同时用引号包裹路径,避免路径中包含空格时出错
  • 标准FTP调用方式:通过生成临时脚本文件的方式传递FTP命令,这是批处理中执行FTP操作的规范方式,确保命令正确执行
  • 细节优化:添加@echo off关闭命令回显,2>nul屏蔽文件夹已存在的提示,最后自动清理临时脚本,保持环境整洁

额外注意事项

  • 如果你的FTP服务器使用非默认端口(默认21),需要在open命令后追加端口,比如open 127.0.0.1 2121
  • 确保账号admin和密码123有权限访问/ftpsrv目录并下载文件
  • 若只需下载特定类型文件,可将mget *.*改为mget *.pdf等匹配模式

内容的提问来源于stack exchange,提问作者haitham ziyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:12:46