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

[文件操作] [已解决]批处理用sdelete彻底删除文件时如何选多个文件或文件夹

  1. @echo off
  2. echo 注意!彻底删除!  ①取消?请按Ctrl+c  ②确认?请按任意键
  3. echo 将删除目录或文件: %1
  4. pause >nul
  5. "sdelete.exe" -p 3 -s %1
  6. echo 结果如上,按任意键退出
  7. pause >nul
复制代码
看网上说明是将该批处理放在sendto目录,右键发送到该批处理进行删除操作,

但这个批处理同时只能发送一个文件或目录进行删除,要怎样可以选择多个文件或目录发送进行删除呢?
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  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

回复 2楼 的帖子

这个能讲解一下吗?不容易看懂!

要是能实现对所选文件随机重命名再删就更好,可以实现到吗?

TOP

回复 3楼 的帖子

是为了防止数据恢复软件看到残留的文件名信息么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

对!为了防止数据恢复软件看到残留的文件名信息。要是能实现对所选文件随机重命名再删就更好,可以实现到吗?

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

谢谢了!批处理真是功能强大!只是自己学得东西太少了

TOP

据说以下两个软件都可以连同文件名一起删掉:
East-Tec Eraser
UstraSentry
有兴趣的朋友不妨试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

批处理才是高效实用的  

Batcher说的软件都是要收费的  ,有开源的吗

TOP

set name=.%random%.%random%
for %%? in (%a%) do (
  ren %%? %name%
  "sdelete.exe" -q -p 3 -s "%%~dp?%name%">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. 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

谢谢了!
试过有时在目录与文件同时选择会有删除不到的情况,不知是什么原因。

TOP

回复 12楼 的帖子

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

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

TOP

返回列表