【发布时间】:2017-05-19 22:23:02
【问题描述】:
我有一个应用程序将文件保存到我同步到我的电脑的 FTP 文件夹中,其中包含多个 JPG 和 MP4 文件,以下列格式命名:
ARC20170510151547.jpg
ARC20170510151549.mp4
我想做的是:
- 将文件从我的 FTP 复制到我的电脑
- 根据文件的创建日期将文件分类到文件夹中
- 从 FTP 中删除超过 14 天的文件
- 从电脑上删除超过 1 个月的文件
使用 WinSCP 通过以下代码连接到 FTP,我可以将所有文件下载到我的本地驱动器:
"c:\program files (x86)\winscp\winscp.com" /ini=nul /command ^
"open ftp://[username]:[password]@[ipaddress]/" ^
"synchronize local f:\[localpath]\ /[remotepath]/ " ^
"exit"
然后我需要对文件进行排序。这是我卡住的地方。我想我知道这些命令,但我不确定如何使用“tokens”和“delims”来让它按我想要的方式工作。
@echo
for %%a in (*.*) do (
echo processing "%%a"
for /f "tokens=1 delims=" %%a in ("%%~nxa") do (
md "%%b-%%c" 2>nul
move "%%a" "%%b-%%c" >nul
)
)
pause
我知道文件名格式不会改变,我考虑的一件事是在文件名中添加一些特殊字符,可能使用“ren”命令。然后我可以使用这些特殊字符作为搜索分隔符,但是,我再次在苦苦挣扎如何最好地继续。
使用以下脚本可以轻松删除超过 30 天的本地文件
forfiles -p "f:\[localpath]" -s -m *.* -d <number of days> -c "cmd /c del @path"
但是,我使用的 WinSCP 'RM' 命令似乎不起作用。它返回错误“找不到匹配'*
"rm /[filepath]/*<14D" ^
我们将不胜感激地收到任何帮助、建议和指导!
【问题讨论】:
-
rm /[filepath]/*<14D完全正确且有效(如果您使用的是最新版本的 WinSCP) - 如果没有,请向我们展示日志文件 - 您确定 FTP 服务器上的文件具有正确的时间戳吗?跨度> -
第 2 点不明确。创建的日期不一定与文件名中的日期匹配。排序意味着移动?文件夹结构也不清楚。 P4 必须深入结构还是从传输文件夹中删除?
-
您好,感谢您的回复。抱歉,混淆了!所以是的,顶级文件夹是年份,下一个是月份,下面是包含相应文件的日期。你是对的,排序在文件上名称,恰好文件名是根据创建日期生成的
标签: batch-file for-loop cmd ftp