[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. if "%~1"=="" exit /b
  3. setlocal disabledelayedexpansion
  4. set a=%*
  5. setlocal enabledelayedexpansion
  6. set a=!a:"=!
  7. set a="!a: %~d1=" "%~d1!"
  8. setlocal disabledelayedexpansion
  9. echo 将彻底删除以下文件(夹): & echo/
  10. for %%? in (%a%) do echo %%?
  11. echo/ & set/p=【取消】请直接关闭,【继续】请按任意键. . .<nul & pause>nul
  12. for %%? in (%a%) do "sdelete.exe" -q -p 3 -s %%?>nul
  13. set/p=完成!按任意键退出. . .<nul & pause>nul
复制代码

TOP

  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. set name=.%random%.%random%
  13. for %%? in (%a%) do (
  14.   ren %%? %name%
  15.   "sdelete.exe" -q -p 3 -s "%%~dp?%name%">nul
  16. )
复制代码
%* 代表传递给批处理的所有参数。如:
D:\1,2.txt "D:\a b" D:\c

可以用 for %%a in (%*) do sdelete.exe -p 3 -s %%a 来删除。

但是,当路径中含有 , ; = 这三个符号时会出错。如上面的会被分为:
D:\1
2.txt
"D:\a b"
D:\c

给路径加上引号可以避免以上情况。

[ 本帖最后由 tireless 于 2009-7-21 00:09 编辑 ]
1

评分人数

TOP

  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. )
复制代码

TOP

回复 12楼 的帖子

文件名中不能含有 ^&。这两个符号没办法避免,因为文件发送到批处理时这两个符号就会丢失。

[ 本帖最后由 tireless 于 2009-7-30 21:57 编辑 ]

TOP

返回列表