标题: [已结]for命令遍历后del删除不了?
[打印本页]
作者: maker0321
时间: 2008-12-25 15:23
标题: [已结]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 ]
作者: kissbill
时间: 2008-12-25 15:56
假如文件名什么有空格的话,肯定是不行的.
作者: maker0321
时间: 2008-12-25 16:21
没有空格,只有特殊符号。例如:xxx.yy_zzzz.bak
都是这样的格式
作者: yishanju
时间: 2008-12-25 16:39
需要开延时
作者: HAT
时间: 2008-12-25 16:44
代码保存为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
作者: maker0321
时间: 2008-12-25 17:21
没有任何报错。但是就是删除不了。我也很郁闷。
作者: HAT
时间: 2008-12-25 18:21
标题: Re 6楼
把运行结果贴出来看看
作者: maker0321
时间: 2008-12-25 18:43
回版主:
按照你的那个带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
请按任意键继续. . .
作者: maker0321
时间: 2008-12-26 09:55
自己up一个。
作者: 不得不爱
时间: 2008-12-26 11:53
D:\datascore\databackup\sql2005backup目录下还有文件夹吗?你是要保留7个文件还是7个文件夹?
[
Last edited by 不得不爱 on 2008-12-26 at 11:55 ]
作者: lovus
时间: 2008-12-26 12:41
新手学习一下。。。拿点积分
作者: maker0321
时间: 2008-12-26 15:25
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 16:03
看下符合要求吗?
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 ]
作者: maker0321
时间: 2008-12-26 17:26
运行不得不爱的批处理,提示
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能查找到文件。
作者: maker0321
时间: 2008-12-26 17:39
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"
谢谢各位无私的帮助,请结贴。多谢
作者: HAT
时间: 2008-12-26 17:52
标题: Re 15楼
下次请自己结贴
并对给过自己帮助的人加分感谢