Board logo

标题: [已结]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
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楼

下次请自己结贴 并对给过自己帮助的人加分感谢