标题: [文件操作] 文件删除的批处理求改进 [打印本页]
作者: kingjames 时间: 2019-9-21 22:11 标题: 文件删除的批处理求改进
原始想法是删除特定文件并同时记录时间戳记- @echo off
- chcp 65001
- >>%cd%\clean.txt echo %DATE%
- set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
- for %%a in (%dsk%) do if exist %%a: call:001 %%a:
- exit
-
- :001
- >>f:\temp\clean.txt del /a /f /q /s %1\*.aaa
- >>f:\temp\clean.txt del /a /f /q /s %1\*.bbb
- >>f:\temp\clean.txt del /a /f /q /s %1\*.ccc
复制代码
上面的写法简单有效
但如果没有特定文件存在时
加的时间戳记稍嫌多余
所以我想多加一个判断
在目标特定档案不存在时
不加时间戳记并直接结束批处理
于是改成为下- chcp 65001
- set "ftype=asp aria2"
- set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
- for %%a in (%dsk%) do if exist %%a: call :001 %%a:
- call :002
- exit
-
- :001
- for %%b in (%ftype%) do del /f /s /q /a %1\*.%%b>>"%cd%\tmp.tmp"
- exit /b
-
- :002
- for /f "usebackq" %%c in ("%cd%\tmp.tmp") do if %%c neq "" call :003
- call :004
-
- :003
- >>"%cd%\clean.txt" echo %date%
- for /f "usebackq tokens=3 delims=- " %%d in ("%cd%\tmp.tmp") do echo %%d>>"%cd%\clean.txt"
- @del /f /a /s /q "%cd%\tmp.tmp"
- exit
-
- :004
- @del /f /a /s /q "%cd%\tmp.tmp"
- exit
复制代码
本人功力有限
只想到先记录到暂存档再处理的方法
步骤稍嫌复杂且批处理的效率稍低
在此想请各先进指点本人思路以增进作业效率
作者: terse 时间: 2019-9-23 00:37
- @echo off & chcp 65001
- set "dsk=d e g h i j k l m n o p q r s t u v w x y z"
- set "ftype=asp aria2"
- for %%a in (%dsk%) do if exist %%a: (
- set f=&echo;%%a
- for %%b in (%ftype%) do (
- set "g="
- for /f "delims=" %%c in ('dir /b /s "%%a:\*.%%b" 2^>nul') do (
- if not defined f >>clean.txt echo;%DATE%&set f=1
- set g=1&>>clean.txt echo;%%c
- )
- if defined g del /a /f /q /s "%%a:\*.%%b" >nul
- )
- )
- pause
复制代码
作者: kingjames 时间: 2019-9-23 19:44
回复 2# terse
非常感谢
这个有些超出我的理解能力
我需要时间加以消化吸收
谢谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |