标题: [文件操作] [已解决]批处理怎么删除多个文件夹内的文件? [打印本页]
作者: xminghk 时间: 2015-5-24 11:23 标题: [已解决]批处理怎么删除多个文件夹内的文件?
本帖最后由 xminghk 于 2015-5-25 12:03 编辑
这个批处理是删除指定天数日期之前的文件,但是只有批定一个文件夹,我有其他的几个文件夹也是同样要删除之前的文件,但是不知要怎么处理,哪位帮忙一下,先谢谢了,- @echo off
- rem 还有其他文件夹内的文件要删除要怎么设呢?如:D:\LastPass\ F:\Temp\ 等等
- rem 用SrcDir1=:D:\LastPass\ SrcDir2=F:\Temp\ 试了好象也不行 只能一个个来就正常了
- set SrcDir=I:\Windows\TOP_2014\
- rem 指定天数
- set DaysAgo=6
- >"%temp%\BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
- for /f %%a in ('cscript /nologo "%temp%\BackupDate.vbs"') do (
- set "RegDateOld=%%a"
- )
- >"%temp%\UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "yyyy-M-d", "REG_SZ"
- cscript /nologo "%temp%\UnifyDate.vbs"
- >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
- set "DstDate=%%a"
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
- for /r "%SrcDir%" %%a in (*.*) do (
- if "%%~ta" leq "%DstDate%" (
- if exist "%%a" (
- del /f /q "%%a"
- )
- )
- )
- >"%temp%\RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "%RegDateOld%", "REG_SZ"
- cscript /nologo "%temp%\RecoverDate.vbs"
复制代码
作者: terse 时间: 2015-5-24 14:53
本帖最后由 terse 于 2015-5-24 18:36 编辑
这个批处理是删除指定天数日期之前的文件,但是只有批定一个文件夹,我有其他的几个文件夹也是同样要删除之 ...
xminghk 发表于 2015-5-24 11:23
将代码- for /r "%SrcDir%" %%a in (*.*) do (
- if "%%~ta" leq "%DstDate%" (
- if exist "%%a" (
- del /f /q "%%a"
- )
- )
- )
复制代码
改为下面试
注意 备份原文件- set filepath="D:\LastPass\" "F:\Temp\"
- for %%f in (%filepath%) do (
- for /f "delims=" %%a in ('dir /s/b/a-d %%f') do (
- if "%%~ta" leq "%DstDate%" del /f /q "%%a"
- )
- )
复制代码
作者: xminghk 时间: 2015-5-24 15:11
试了还是不行,连文件都不能删除,我上面的那个是可以删除,但是只有删除一个文件夹内的文件,变成如果要删除多个文件夹要多做几个批处理,只能删单独一个文件夹内的文件(set SrcDir=I:\Windows\TOP_2014\)才行,不过还是谢谢你的,谢谢你了。
作者: terse 时间: 2015-5-24 16:50
试了还是不行,连文件都不能删除,我上面的那个是可以删除,但是只有删除一个文件夹内的文件,变成如果要删 ...
xminghk 发表于 2015-5-24 15:11
del /f /q "%%a" 换 Echo "%%a" 看什么结果
作者: xminghk 时间: 2015-5-24 17:07
还是不行啊,老师,是不是改成下面这样?试了还是不行的,
@echo off
rem 指定待删除文件的存放路径 系统日期改格式yyyy-mm-dd
set SrcDir=I:\Windows\ESWeb\
set SrcDir1=I:\Windows\KIS_2014\
set SrcDir2=I:\Windows\TOP_2014\
set SrcDir3=I:\Windows\TOP_2015\
rem 指定天数
set DaysAgo=4
>"%temp%\BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
for /f %%a in ('cscript /nologo "%temp%\BackupDate.vbs"') do (
set "RegDateOld=%%a"
)
>"%temp%\UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "yyyy-M-d", "REG_SZ"
cscript /nologo "%temp%\UnifyDate.vbs"
>"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
set filepath="I:\Windows\ESWeb\" "I:\Windows\KIS_2014\" "I:\Windows\TOP_2014\" "I:\Windows\TOP_2015\"
for %%f in (filepath) do (
for /f "delims=" %%a in ('dir /s/b/a-d %%f') do (
if "%%~ta" leq "%DstDate%" Echo "%%a"
)
)
>"%temp%\RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "%RegDateOld%", "REG_SZ"
cscript /nologo "%temp%\RecoverDate.vbs"
作者: terse 时间: 2015-5-24 18:35
还是不行啊,老师,是不是改成下面这样?试了还是不行的,
@echo off
rem 指定待删除文件的存放路径 系 ...
xminghk 发表于 2015-5-24 17:07
漏写了- for %%f in (%filepath%) do
复制代码
作者: terse 时间: 2015-5-24 18:36
还是不行啊,老师,是不是改成下面这样?试了还是不行的,
@echo off
rem 指定待删除文件的存放路径 系 ...
xminghk 发表于 2015-5-24 17:07
2楼已改正
作者: xminghk 时间: 2015-5-24 23:23
谢谢你了老师,好了。
作者: pcl_test 时间: 2015-5-25 00:23
回复 8# xminghk
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: xminghk 时间: 2015-5-25 11:18
不行,今天测试了一下还是没解决的,没有删除文件,只有我在一楼说的那种才行,我那种只有删除一个文件夹内的文件,不能删除其他路径文件夹内的文件,昨天以为terse老师的可以,是因为运行的时候没有出现错误,以为可以了,但后来再测试一下,发现并没有删除文件。
作者: Batcher 时间: 2015-5-25 11:25
- @echo off
- rem 指定天数
- set DaysAgo=6
- >"%temp%\BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
- for /f %%a in ('cscript /nologo "%temp%\BackupDate.vbs"') do (
- set "RegDateOld=%%a"
- )
- >"%temp%\UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "yyyy-M-d", "REG_SZ"
- cscript /nologo "%temp%\UnifyDate.vbs"
- >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
- set "DstDate=%%a"
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
-
- REM 删除多个文件夹内的文件
- for %%i in ("D:\LastPass" "F:\Temp" "I:\Windows\TOP_2014") do (
- pushd "%%i"
- for /r %%a in (*.*) do (
- if "%%~ta" leq "%DstDate%" (
- if exist "%%a" (
- del /f /q "%%a"
- )
- )
- )
- popd
- )
-
- >"%temp%\RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
- >>"%temp%\RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "%RegDateOld%", "REG_SZ"
- cscript /nologo "%temp%\RecoverDate.vbs"
复制代码
作者: terse 时间: 2015-5-25 11:28
回复 10# xminghk
最终运行的代码发上来
另 去掉最后加上的”ECHO“ 吗
作者: xminghk 时间: 2015-5-25 11:38
@echo off
rem 指定待删除文件的存放路径 系统日期改格式yyyy-mm-dd
set SrcDir=I:\Windows\ESWeb\
set SrcDir=I:\Windows\KIS_2014\
set SrcDir=I:\Windows\TOP_2014\
set SrcDir=I:\Windows\TOP_2015\
rem 指定天数
set DaysAgo=4
>"%temp%\BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
for /f %%a in ('cscript /nologo "%temp%\BackupDate.vbs"') do (
set "RegDateOld=%%a"
)
>"%temp%\UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "yyyy-M-d", "REG_SZ"
cscript /nologo "%temp%\UnifyDate.vbs"
>"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
set filepath="I:\Windows\ESWeb\" "I:\Windows\KIS_2014\" "I:\Windows\TOP_2014\" "I:\Windows\TOP_2015\"
for %%f in (%filepath%) do (
for /f "delims=" %%a in ('dir /s/b/a-d %%f') do (
if "%%~ta" leq "%DstDate%" "%%a"
)
)
>"%temp%\RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "%RegDateOld%", "REG_SZ"
cscript /nologo "%temp%\RecoverDate.vbs"
作者: terse 时间: 2015-5-25 11:41
回复 13# xminghk
if "%%~ta" leq "%DstDate%" "%%a" 这里 改 if "%%~ta" leq "%DstDate%" del /q /f "%%a"
作者: xminghk 时间: 2015-5-25 11:46 标题: [已解决]批处理怎么删除多个文件夹内的文件?
本帖最后由 xminghk 于 2015-5-25 11:56 编辑
可以了,成功了,11楼的Batcher老师修改后的批处理可以了,terse老师的也测试成立。谢谢,谢谢Batcher老师,谢谢terse老师,谢谢你们的帮助。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |