|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『楼 主』:
[已结]for命令遍历后del删除不了?
我的目的是,每天备份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 ]
|
|
2008-12-25 15:23 |
|
|
kissbill
初级用户
 
积分 61
发帖 35
注册 2008-10-4
状态 离线
|
『第
2 楼』:
假如文件名什么有空格的话,肯定是不行的.
|
|
2008-12-25 15:56 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
3 楼』:
没有空格,只有特殊符号。例如:xxx.yy_zzzz.bak
都是这样的格式
|
|
2008-12-25 16:21 |
|
|
yishanju
银牌会员
     [b]看你妹啊[/b]
积分 1488
发帖 1357
注册 2006-5-20
状态 离线
|
『第
4 楼』:
需要开延时
|

有问题请发论坛或者自行搜索,再短消息问我的统统是SB |
|
2008-12-25 16:39 |
|
|
HAT
版主
       
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
5 楼』:
代码保存为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
|

 |
|
2008-12-25 16:44 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
6 楼』:
没有任何报错。但是就是删除不了。我也很郁闷。
|
|
2008-12-25 17:21 |
|
|
HAT
版主
       
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
7 楼』:
Re 6楼
把运行结果贴出来看看
|

 |
|
2008-12-25 18:21 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
8 楼』:
回版主:
按照你的那个带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
请按任意键继续. . .
|
|
2008-12-25 18:43 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
|
2008-12-26 09:55 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2008-12-26 11:53 |
|
|
lovus
新手上路

积分 1
发帖 1
注册 2008-12-12
状态 离线
|
|
2008-12-26 12:41 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
12 楼』:
Quote: | 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个文件。
|
|
2008-12-26 15:25 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2008-12-26 16:03 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
14 楼』:
运行不得不爱的批处理,提示
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能查找到文件。
|
|
2008-12-26 17:26 |
|
|
maker0321
初级用户
 
积分 78
发帖 37
注册 2007-11-5
状态 离线
|
『第
15 楼』:
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"
谢谢各位无私的帮助,请结贴。多谢
|
|
2008-12-26 17:39 |
|