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

[文件操作] 删除多个文件时(30个以上)批处理出错,是什么原因?

  1. @echo off
  2. if "%~1"=="" exit /b
  3. set a=%*
  4. set a=%a:"=%
  5. call set a="%%a: %~d1=" "%~d1%%"
  6. echo 将彻底删除以下文件(夹):
  7. echo/
  8. for %%? in (%a%) do echo %%?
  9. echo/
  10. set /p=【取消】请直接关闭,【继续】请按任意键. . . <nul
  11. pause>nul
  12. for %%? in (%a%) do (
  13.   set FilePath=%%~dp?
  14.   set OldName=%%~nx?
  15.   setlocal enabledelayedexpansion
  16.   set NewName=.!random!.!random!
  17.   ren "!FilePath!!OldName!" !NewName!
  18.   "sdelete.exe" -q -p 3 -s "!FilePath!!NewName!">nul
  19.   endlocal
  20. )
复制代码

以上tireless提供的代码每次在选很多文件时发送到这个批处理时会出现如附件所示出错信息,但选10多个文件时不会有这情况。
[attach]2126[/attach]

[ 本帖最后由 qwertl 于 2009-12-24 09:05 编辑 ]

与批处理无关,可能是操作系统的Bug,命令行太长所致。
或许是一个缓冲区溢出漏洞?
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 2楼 的帖子

能怎样通过批处理分批按一定文件数量来来处理吗?

[ 本帖最后由 qwertl 于 2009-12-24 09:13 编辑 ]

TOP

回复 2楼 的帖子

我猜测是:
set a=%*接受参数的个数大概是33个左右,导致的。
也就是说,参数不能超过33,如果超过就会弹出楼主所贴的附件中的图。
(*^_^*)

TOP

怎样改进批处理可以避免这个限制?

TOP

回复 4楼 的帖子

说了不是批处理的问题。
选中大量文件随便拖到一个什么程序上,都是一样的错误。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表