中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 22:04
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » ftp 删除服务器上的文件问题 查看 1,182 回复 9
楼 主 ftp 删除服务器上的文件问题 发表于 2008-12-15 11:19 ·  中国 陕西 西安 电信
新手上路
积分 4
发帖 3
注册 2007-12-21 13:02
18年会员
UID 106362
性别 男
状态 离线
现在有一个BAT脚本,每天早晚分别上传不同的文件。现在想通过上传文件后自动把删除掉FTP上一周前的文件给删掉,只保留最近一周的,能不能实现。
文件格式如下。
008-11-25 11:32 1,131,266 posSeller_2008-12-12早.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-12晚.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-13早.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-13晚.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-14早.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-14晚.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-15早.BAK
008-11-25 11:32 1,131,266 posSeller_2008-12-15晚.BAK

ftp 脚本如下

@echo off
set dt=%date:~0,10%

if "%time:~0,5%" geq " 7:00" (
if "%time:~0,5%" lss "12:00" (
goto _amftp
) else if "%time:~0,5%" geq "12:00" (
if "%time:~0,5%" lss "24:00" (
goto _pmftp
)
)
)

:_amftp
echo nfspos> up.txt
echo nfspos>> up.txt
echo binary>> up.txt
echo hash>> up.txt
echo cd /nfspos/foodcard>> up.txt
echo put posSeller_%dt%早.BAK>> up.txt
echo bye>> up.txt
ftp -i -s:up.txt 192.10.1.249
del up.txt
goto _end

:_pmftp
echo nfspos> up.txt
echo nfspos>> up.txt
echo binary>> up.txt
echo hash>> up.txt
echo cd /nfspos/foodcard>> up.txt
echo put posSeller_%dt%晚.BAK>> up.txt
echo bye>> up.txt
ftp -i -s:up.txt 192.10.1.249
del up.txt
goto _end

:_end
2 发表于 2008-12-15 11:53 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
楼主不知道如何计算一周前的日期?还是不知道如何用ftp命令删除文件?
或者两个都不会,只能等待他人给出完整代码?
3 发表于 2008-12-15 15:37 ·  中国 广东 东莞 电信
中级用户
★★
积分 461
发帖 243
注册 2007-10-14 16:56
18年会员
UID 99730
性别 男
状态 离线
"现在想通过上传文件后自动把删除掉FTP上一周前的文件给删掉,只保留最近一周的,"

在FTP服务器上执行任务计划运行批处理来实现比较容易,通过客户端来好象不实现到.
4 发表于 2008-12-15 16:00 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我只会说计算日期用DATEX

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2008-12-15 16:01 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
可以用来计算,某天某日,N天前后的日期

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
6 发表于 2008-12-15 16:25 ·  中国 陕西 西安 电信
新手上路
积分 4
发帖 3
注册 2007-12-21 13:02
18年会员
UID 106362
性别 男
状态 离线
日期可以计算出来,但计算出来的日期怎么和服务器上的文件想比较,ftp 里可以用正则表达式吗。现在服务器是没有ROOT权限,做不了定时计划任务。

[ Last edited by westmstc on 2008-12-15 at 16:27 ]
7 发表于 2008-12-15 16:39 ·  中国 广东 深圳 电信
初级用户
★★
游手好闲 + 无所事事 ..
积分 194
发帖 167
注册 2007-04-30 09:43
19年会员
UID 87022
性别 男
状态 离线
有个思路:
登陆ftp,list保存下来个TXT文件,每行是一个文件名。
然后把本地日期做个变量,然后根据变量生成最近7天的日期变量的文件名。
然后在TXT里面,查询每行的变量,将每行的变量用set命令替换这个变量7次,每一次都将7个日期变量中的一个替换为空,替换完毕后,这样剩下的txt就是应该删除文件的列表了,再登陆FTP ,del这些文件就可以了。
8 发表于 2008-12-15 16:41 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我自己的数据备份软件脚本是这样处理的,每次运行的时候就删除三天前的数据文件,

for /f %%i in ('datex -d yyyymmdd -o 3') do (set old=%%i)
del empire_%old%.bak

[ Last edited by yishanju on 2008-12-15 at 16:59 ]

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
9 发表于 2008-12-15 16:47 ·  中国 广东 深圳 电信
初级用户
★★
游手好闲 + 无所事事 ..
积分 194
发帖 167
注册 2007-04-30 09:43
19年会员
UID 87022
性别 男
状态 离线
Originally posted by yishanju at 2008-12-15 04:41 PM:
我在主题里并没有看到这样的意思


6楼里有这个意思。
10 Re 6楼 发表于 2008-12-15 18:11 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
建议把6楼的描述更新到顶楼,以方便他人查看。
论坛跳转: