中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 00:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]for命令遍历后del删除不了? 查看 1,942 回复 15
楼 主 [已结]for命令遍历后del删除不了? 发表于 2008-12-25 15:23 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
我的目的是,每天备份sql数据库,之后删除之前的7个备份文件。备份是能成功,但是删除不了文件,不知道哪里出来问题,请教大家。
批处理内容如下:
"D:\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlmaint.exe" -U sa -P datascore -D "cdt.dctool" -PlanName backupdata -BkUpDB D:\datascore\databackup\sql2005backup -BkUpMedia DISK
set catalog=D:\datascore\databackup\sql2005backup
@for /f %%i in ('dir /b/ad %catalog%') do (@for /f "skip=7" %%f in ('dir /b/o-n %catalog%\%%i') do del /s/q %catalog%\%%i\%%f)



D:\datascore\databackup\sql2005backup目录下已经有了超过7个文件了。
在线等答案。谢谢大家

[ Last edited by HAT on 2008-12-26 at 17:51 ]
2 发表于 2008-12-25 15:56 ·  中国 天津 联通
初级用户
积分 61
发帖 35
注册 2008-10-04 13:00
17年会员
UID 127389
性别 男
状态 离线
假如文件名什么有空格的话,肯定是不行的.
3 发表于 2008-12-25 16:21 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
没有空格,只有特殊符号。例如:xxx.yy_zzzz.bak
都是这样的格式
4 发表于 2008-12-25 16:39 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
需要开延时

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2008-12-25 16:44 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
代码保存为test.bat
双击运行
看看运行过程就知道问什么错了
"D:\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlmaint.exe" -U sa -P datascore -D "cdt.dctool" -PlanName backupdata -BkUpDB D:\datascore\databackup\sql2005backup -BkUpMedia DISK
set catalog=D:\datascore\databackup\sql2005backup
for /f %%i in ('dir /b/ad %catalog%') do (
for /f "skip=7" %%f in ('dir /b/o-n %catalog%\%%i') do (
del /s/q %catalog%\%%i\%%f\
)
pause
)
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
maker0321 +2 2008-12-26 19:26
6 发表于 2008-12-25 17:21 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
没有任何报错。但是就是删除不了。我也很郁闷。
7 Re 6楼 发表于 2008-12-25 18:21 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
把运行结果贴出来看看
8 发表于 2008-12-25 18:43 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
回版主:
按照你的那个带pause的批处理
没有运行结果,没有返回信息。
D:\>a1.bat

D:\>set catalog=D:\datascore\databackup\sql2005backup

D:\>for /F %i in ('dir /b/ad D:\datascore\databackup\sql2005backup') do (
for /F "skip=7" %f in ('dir /b/o-n D:\datascore\databackup\sql2005backup\%i') do
(del /s/q D:\datascore\databackup\sql2005backup\%i\%f\ )
pause
)

D:\>pause
请按任意键继续. . .
9 发表于 2008-12-26 09:55 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
自己up一个。
10 发表于 2008-12-26 11:53 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
D:\datascore\databackup\sql2005backup目录下还有文件夹吗?你是要保留7个文件还是7个文件夹?

[ Last edited by 不得不爱 on 2008-12-26 at 11:55 ]
11 发表于 2008-12-26 12:41 ·  中国 广东 珠海 香洲区 电信
新手上路
积分 1
发帖 1
注册 2008-12-12 09:24
17年会员
UID 133616
性别 男
状态 离线
新手学习一下。。。拿点积分
12 发表于 2008-12-26 15:25 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
Originally posted by 不得不爱 at 2008-12-26 11:53 AM:
D:\datascore\databackup\sql2005backup目录下还有文件夹吗?你是要保留7个文件还是7个文件夹?

[ Last edited by 不得不爱 on 2008-12-26 at 11:55 ]


D:\datascore\databackup\sql2005backup目录下面只有文件,是要保留7个文件。
13 发表于 2008-12-26 16:03 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
看下符合要求吗?
set catalog=D:\datascore\databackup\sql2005backup
for /f "skip=7 delims=" %%f in ('dir/o-d/a-d/b %catalog%) do del /q "%catalog%\%%f"


[ Last edited by 不得不爱 on 2008-12-26 at 16:04 ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +2 2008-12-26 17:52
maker0321 +2 2008-12-26 19:26
14 发表于 2008-12-26 17:26 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
运行不得不爱的批处理,提示
D:\>for /F "skip=7 delims=" %f in ('dir/o-d/a-d/b D:\datascore\databackup\sql200
5backup) do del /q "D:\datascore\databackup\sql2005backup\%f"
系统找不到文件 'dir/o-d/a-d/b D:\datascore\databackup\sql2005backup。

但是我直接dir/o-d/a-d/b D:\datascore\databackup\sql2005backup能查找到文件。
15 发表于 2008-12-26 17:39 ·  中国 黑龙江 七台河 联通
初级用户
积分 78
发帖 37
注册 2007-11-05 12:35
18年会员
UID 101756
性别 男
状态 离线
set catalog=D:\datascore\databackup\sql2005backup
for /f "skip=7 delims=" %%f in ('dir/o-d/a-d/b %catalog%) do del /q "%catalog%\%%f"

少了个分号,不好意思没看到。现在可以执行了。贴出最终版本
set catalog=D:\datascore\databackup\sql2005backup
for /f "skip=7 delims=" %%f in ('dir/o-d/a-d/b %catalog%') do del /q "%catalog%\%%f"
谢谢各位无私的帮助,请结贴。多谢
论坛跳转: