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

[文件操作] 文件删除的批处理求改进

原始想法是删除特定文件并同时记录时间戳记
  1. @echo off
  2. chcp 65001
  3. >>%cd%\clean.txt echo %DATE%
  4. set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
  5. for %%a in (%dsk%) do if exist %%a: call:001 %%a:
  6. exit
  7. :001
  8. >>f:\temp\clean.txt del /a /f /q /s %1\*.aaa
  9. >>f:\temp\clean.txt del /a /f /q /s %1\*.bbb
  10. >>f:\temp\clean.txt del /a /f /q /s %1\*.ccc
复制代码
上面的写法简单有效
但如果没有特定文件存在时
加的时间戳记稍嫌多余
所以我想多加一个判断
在目标特定档案不存在时
不加时间戳记并直接结束批处理
于是改成为下
  1. chcp 65001
  2. set "ftype=asp aria2"
  3. set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
  4. for %%a in (%dsk%) do if exist %%a: call :001 %%a:
  5. call :002
  6. exit
  7. :001
  8. for %%b in (%ftype%) do del /f /s /q /a %1\*.%%b>>"%cd%\tmp.tmp"
  9. exit /b
  10. :002
  11. for /f "usebackq" %%c in ("%cd%\tmp.tmp") do if %%c neq "" call :003
  12. call :004
  13. :003
  14. >>"%cd%\clean.txt" echo %date%
  15. for /f "usebackq tokens=3 delims=- " %%d in ("%cd%\tmp.tmp") do echo %%d>>"%cd%\clean.txt"
  16. @del /f /a /s /q "%cd%\tmp.tmp"
  17. exit
  18. :004
  19. @del /f /a /s /q "%cd%\tmp.tmp"
  20. exit
复制代码
本人功力有限
只想到先记录到暂存档再处理的方法
步骤稍嫌复杂且批处理的效率稍低
在此想请各先进指点本人思路以增进作业效率

回复 2# terse
非常感谢
这个有些超出我的理解能力
我需要时间加以消化吸收
谢谢!

TOP

  1. @echo off & chcp 65001
  2. set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
  3. set "ftype=asp aria2"
  4. for %%a in (%dsk%) do  if exist %%a: (
  5.       set f=&echo;%%a
  6.       for %%b in (%ftype%) do (
  7.             set "g="
  8.             for /f "delims=" %%c in ('dir /b /s "%%a:\*.%%b" 2^>nul') do (
  9.                   if not defined f  >>clean.txt echo;%DATE%&set f=1
  10.                   set g=1&>>clean.txt echo;%%c
  11.             )
  12.             if defined g del /a /f /q /s "%%a:\*.%%b" >nul
  13.       )
  14. )
  15. pause
复制代码

TOP

返回列表