[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何解决在批处理中rd /s /q cab未能正常删除目录cab的问题

【环境】
os:win2k srv en
dos窗口:cmd.exe
【问题】
要从多个版本windows 2k光碟中拷贝特定的文件与目录到当前目录,做完处理后,需要把前一个版本生成的cab目录及下面的目录删除。
在相应的批处理初始化中,我使用"rd /s /q cab"语句,在实际执行中,发现问题:
1.有的时候可以正常删除指定的cab目录。
2.有的时候无法正常删除指定的cab目录,提示信息是:"cab\I386\IIS5_01 - the process cannot access the file because it is being used by another process.",重新在命令提示行下面来测试,这个提示不能完成删除操作信息内的特定目录是不确定的,这时只要再次运行一次"rd /s /q cab"可以正常完成目录删除操作。

在确定批处理内没有更进一步的对需要删除目录下文件进行操作的前提条件下面,为了可靠地保证完成这个目录删除操作,应该注意点什么?语句应该如何编写才正确?

谢谢!!

[ 本帖最后由 nh_wzg 于 2008-10-1 11:52 编辑 ]

"cab\I386\IIS5_01 - the process cannot access the file because it is being used by another process."
这个意思是说因为另一个程序正在使用目录所以不能对那个目录进行存取操作

你是不是拷贝没完成就开始删除了,或是有病毒

TOP

谢谢楼上的回复!

如果是这样的话,哪第二次操作的成功是如何解释?

另外:我可以确定这个命令与其它操作无关,因为这是在批处理中的初始化阶段的操作,批处理中其它对目录与文件的操作还没有开始。

防病毒在公司中采用了集中式的管理,本人也没有上不明网站的习惯,暂时不考虑吧。

TOP

如果第二次能解决问题的话,为解决问题而解决问题,用 goto 再 用 if  判断一下就可以了。
技术问题请到论坛发帖求助!

TOP

这个有陷入死循环的可能性,可能加一个计数器,判断一下,显示出错信息,直接跳出来算了。

原来提出问题主要想知道原因,现在这样也是解决问题的一个方法。
  1. set count=1
  2. :init
  3. if /i exist %cd%\cab  rd /s /q %cd%\cab
  4. if /i exist %cd%\cab  set /a count=count+1
  5. if count  EQU 1 goto normal
  6. if count  EQU 5 (echo Initializing Failed ... &echo.&goto end) else goto init
  7. :normal
  8. ....
  9. :end
  10. pause
复制代码


BTW:
如果这个批处理是一个通过主批处理程序通过CALL来调用的批处理,有什么方法直接由这个被调用批处理中,按上面的出错信息,直接跳到主批处理的eof或:label?

谢谢!!

[ 本帖最后由 nh_wzg 于 2008-10-1 15:05 编辑 ]

TOP

不需要计数器,直接判断文件夹是否删除就可以了。
:
  1. @echo off
  2. :init
  3. rd /s /q "%cd%\cab" 2>nul
  4. if /i exist "%cd%\cab\"  goto init
  5. echo  以删除。。。
  6. pause
复制代码
主批处理代码
  1. @echo off
  2. call 副批处理.bat var
  3. if defined var goto label
  4. echo.
  5. echo. abcddfjdjfajfadf
  6. pause
  7. :label
  8. echo  以跳转到此
  9. pause
复制代码
副批处理代码
  1. @echo off
  2. :init
  3. rd /s /q "%cd%\cab" 2>nul
  4. if /i exist "%cd%\cab\"  goto init
  5. set %~1=a
  6. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-10-1 15:12 编辑 ]
技术问题请到论坛发帖求助!

TOP

返回列表