在windows下面怎么写批处理文件,删除某文件夹下五天以前的文件?

时间:2022-02-14 23:08:35
在windows下面怎么写批处理文件,删除某文件夹下五天以前的文件?

34 个解决方案

#1


@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=right(year(dt),2) ^& right("00" ^& month(dt),2) ^& right("00" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f %%i in ('cscript /nologo %temp%\tmp.vbs') do @rmdir /s /q d:\yourdir\%%i

#2


佩服、现收藏,批处理也是一直是本人想学的,但是一直没学到手。嘿嘿。

#3


@echo off起到什么作用?可以不写吗?

#4


麻烦spark_li(晕忽忽(恶人谷:通讯连长)) ,可以在这些语句后面给点解释吗?

#5


@echo off
可以不写
echo off 的意思是关闭命令回现


举个例子吧,
tmp.bat的内容如下

@echo off
date /t
echo on
date /t



执行tmp.bat后系统的输入
C:\>tmp
2006-11-13 星期一

C:\>date /t
2006-11-13 星期一

不知道你看出来区别没,

#6


真的不好意思,我没看出来?麻烦你没一句都解释一下好吗?

#7


我运行了上面的命令,youdir下面五天前的文件并没删除阿

#8


晕哦,犯错误了,你还没有说说你文件的命名格式呢
你的文件名是任意的么?

如果是这样,这个批处理就要修改一下了。

#9


我的问题是这么产生的:
在windows平台下,目前我采用exp usr/pwd file=d:\%date:~4,10%.dmp 
的方式,每天晚上自动执行,但是,由于这种方式的每次产生的文件名是一样的,所以每天只能保留一个备份文件,请问有没什么脚本可以像unix环境下面那样,在文件名前面加上日期,并且可以自动删除五天以前的备份文件。
文件命名的格式是.dmp文件

#10


我希望是根据文件的创建时间来判断的,不希望通过文件名中的时间来判断时间????????????????????

#11


我的问题是这么产生的:
在windows平台下,目前我采用exp usr/pwd file=d:\username%date:~4,10%.dmp 
的方式,每天晚上自动执行,请问有没什么脚本可以像unix环境下面那样,在文件名前面加上日期,并且可以自动删除五天以前的备份文件。
文件命名的格式是.dmp文件

#12


哎,昨天我回复的时候真郁闷,打了n多字,csdn突然不能访问了。

cowbaby是用来备份oracle的数据吧
看我的oracle备份脚本

@echo off
set filename=e:\data_bak\%date:~8,2%日

exp userid=user/pass@esdata file=%filename%.dmp owner=user INDEXES=y grants=y constraints=y compress=y log=%filename%.log

rar a %filename%.rar %filename%.*

del %filename%.dmp
del %filename%.log


放计划任务里面定时执行,
文件名以日期的day部分来命名
备份后调用rar进行压缩
这样可以保存一个月的历史数据。

#13


你要5天的,你可以这样,以日期的星期部分来命名(这样有七天的数据)

不用删除,自动可以覆盖的啊

#14


你真要的话,昨天写了没有保存,正好有空,重写了一个

@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=year(dt) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^&  right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f "delims=x" %%i in ('cscript /nologo %temp%\tmp.vbs') do @set ref=%%i
for /f "tokens=1,2,3*" %%i in ('dir /tc d:\xtmp\tmp\*.txt^|find ":"^|find "-"') do (
if %%i LSS %ref% echo %%l
)


你把上面的路径修改一下就可以了
d:\xtmp\tmp\*.txt

#15


非常感谢spark_li(晕忽忽(恶人谷:通讯连长)) ,我现在终于看懂了,谢谢,这个脚本用处太大了!!!

#16


请问spark_li(晕忽忽(恶人谷:通讯连长)) :
上面您的数据库备份脚本我觉得特别好,其中
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
这三句话可以解释一下吗?

#17


1、压缩
2、删除.dmp文件
3、删除.log文件

#18


删除我知道,但是为什么要删除?
每个月会循环覆盖的阿?

#19


哦,明白了,.DMP文件已经压缩成.RAR文件了,因此删除原来的.DMP文件,呵呵。

#20


from spark_li(晕忽忽(恶人谷:通讯连长)) :
你要5天的,你可以这样,以日期的星期部分来命名(这样有七天的数据)
不用删除,自动可以覆盖的啊。

请问:
以日期的星期部分来命名脚本应该取date函数的哪几位?

#21


%date:~11,3%

#22


参考:http://blog.csdn.net/scz123/archive/2006/09/12/1213907.aspx

#23


感谢spark_li(晕忽忽(恶人谷:通讯连长)) !!!
感谢scz123(小章 http://blog.csdn.net/scz123/)!!!
感谢CSDN为我们提供这么好的学习平台!!!

#24


To:spark_li(晕忽忽(恶人谷:通讯连长)):
@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=year(dt) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^&  right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f "delims=x" %%i in ('cscript /nologo %temp%\tmp.vbs') do @set ref=%%i
for /f "tokens=1,2,3*" %%i in ('dir /tc d:\xtmp\tmp\*.txt^|find ":"^|find "-"') do (
if %%i LSS %ref% echo %%l
)
这个脚本我运行了一下,还是不能删除?
我在d:\xtmp\tmp\下面建立了几个文本文件,然后修改系统日期到五天之后,还是不能删除目标文件。
请问还有什么问题吗?

#25


我在自己的环境下面使用:
rar a %filename%.rar %filename%.*
并不会生成rar文件?
是不是PATH变量还没有设置好?

#26


这样吧,你把program files/winrar目录下的rar.exe拷贝到系统system32目录下吧

#27


你得把我批处理里面的
if %%i LSS %ref% echo %%l

修改成

if %%i LSS %ref% rmdir /s /q %%l

#28


我修改成
if %%i LSS %ref% rmdir /s /q %%l
还是不能删除该文件夹下的.txt文件
??

#29


if %%i LSS %ref% rmdir /s /q %%l

修改成if %%i LSS %ref% rmdir /s /q d:\xtmp\tmp\%%l


#30


晕呀,还是
if %%i LSS %ref% rmdir /s /q d:\xtmp\tmp\%%l
修改成

if %%i LSS %ref% del /f d:\xtmp\tmp\%%l

#31


不錯,記下了!

#32


我试过了,这下可以了,真的删除了,呵呵:)
不过删除date()-1的文件,是删除一天以前的,昨天的文件还是保留的,呵呵:)
谢谢!!!

#33


但是出现一个很奇怪的问题,我用汉字命名的文本文件,为什么删除不了?

#34


出现一个很奇怪的问题,我用汉字命名的文本文件,为什么删除不了?

#1


@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=right(year(dt),2) ^& right("00" ^& month(dt),2) ^& right("00" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f %%i in ('cscript /nologo %temp%\tmp.vbs') do @rmdir /s /q d:\yourdir\%%i

#2


佩服、现收藏,批处理也是一直是本人想学的,但是一直没学到手。嘿嘿。

#3


@echo off起到什么作用?可以不写吗?

#4


麻烦spark_li(晕忽忽(恶人谷:通讯连长)) ,可以在这些语句后面给点解释吗?

#5


@echo off
可以不写
echo off 的意思是关闭命令回现


举个例子吧,
tmp.bat的内容如下

@echo off
date /t
echo on
date /t



执行tmp.bat后系统的输入
C:\>tmp
2006-11-13 星期一

C:\>date /t
2006-11-13 星期一

不知道你看出来区别没,

#6


真的不好意思,我没看出来?麻烦你没一句都解释一下好吗?

#7


我运行了上面的命令,youdir下面五天前的文件并没删除阿

#8


晕哦,犯错误了,你还没有说说你文件的命名格式呢
你的文件名是任意的么?

如果是这样,这个批处理就要修改一下了。

#9


我的问题是这么产生的:
在windows平台下,目前我采用exp usr/pwd file=d:\%date:~4,10%.dmp 
的方式,每天晚上自动执行,但是,由于这种方式的每次产生的文件名是一样的,所以每天只能保留一个备份文件,请问有没什么脚本可以像unix环境下面那样,在文件名前面加上日期,并且可以自动删除五天以前的备份文件。
文件命名的格式是.dmp文件

#10


我希望是根据文件的创建时间来判断的,不希望通过文件名中的时间来判断时间????????????????????

#11


我的问题是这么产生的:
在windows平台下,目前我采用exp usr/pwd file=d:\username%date:~4,10%.dmp 
的方式,每天晚上自动执行,请问有没什么脚本可以像unix环境下面那样,在文件名前面加上日期,并且可以自动删除五天以前的备份文件。
文件命名的格式是.dmp文件

#12


哎,昨天我回复的时候真郁闷,打了n多字,csdn突然不能访问了。

cowbaby是用来备份oracle的数据吧
看我的oracle备份脚本

@echo off
set filename=e:\data_bak\%date:~8,2%日

exp userid=user/pass@esdata file=%filename%.dmp owner=user INDEXES=y grants=y constraints=y compress=y log=%filename%.log

rar a %filename%.rar %filename%.*

del %filename%.dmp
del %filename%.log


放计划任务里面定时执行,
文件名以日期的day部分来命名
备份后调用rar进行压缩
这样可以保存一个月的历史数据。

#13


你要5天的,你可以这样,以日期的星期部分来命名(这样有七天的数据)

不用删除,自动可以覆盖的啊

#14


你真要的话,昨天写了没有保存,正好有空,重写了一个

@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=year(dt) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^&  right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f "delims=x" %%i in ('cscript /nologo %temp%\tmp.vbs') do @set ref=%%i
for /f "tokens=1,2,3*" %%i in ('dir /tc d:\xtmp\tmp\*.txt^|find ":"^|find "-"') do (
if %%i LSS %ref% echo %%l
)


你把上面的路径修改一下就可以了
d:\xtmp\tmp\*.txt

#15


非常感谢spark_li(晕忽忽(恶人谷:通讯连长)) ,我现在终于看懂了,谢谢,这个脚本用处太大了!!!

#16


请问spark_li(晕忽忽(恶人谷:通讯连长)) :
上面您的数据库备份脚本我觉得特别好,其中
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
这三句话可以解释一下吗?

#17


1、压缩
2、删除.dmp文件
3、删除.log文件

#18


删除我知道,但是为什么要删除?
每个月会循环覆盖的阿?

#19


哦,明白了,.DMP文件已经压缩成.RAR文件了,因此删除原来的.DMP文件,呵呵。

#20


from spark_li(晕忽忽(恶人谷:通讯连长)) :
你要5天的,你可以这样,以日期的星期部分来命名(这样有七天的数据)
不用删除,自动可以覆盖的啊。

请问:
以日期的星期部分来命名脚本应该取date函数的哪几位?

#21


%date:~11,3%

#22


参考:http://blog.csdn.net/scz123/archive/2006/09/12/1213907.aspx

#23


感谢spark_li(晕忽忽(恶人谷:通讯连长)) !!!
感谢scz123(小章 http://blog.csdn.net/scz123/)!!!
感谢CSDN为我们提供这么好的学习平台!!!

#24


To:spark_li(晕忽忽(恶人谷:通讯连长)):
@echo off
echo dt=date()-5>%temp%\tmp.vbs
echo s=year(dt) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^&  right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f "delims=x" %%i in ('cscript /nologo %temp%\tmp.vbs') do @set ref=%%i
for /f "tokens=1,2,3*" %%i in ('dir /tc d:\xtmp\tmp\*.txt^|find ":"^|find "-"') do (
if %%i LSS %ref% echo %%l
)
这个脚本我运行了一下,还是不能删除?
我在d:\xtmp\tmp\下面建立了几个文本文件,然后修改系统日期到五天之后,还是不能删除目标文件。
请问还有什么问题吗?

#25


我在自己的环境下面使用:
rar a %filename%.rar %filename%.*
并不会生成rar文件?
是不是PATH变量还没有设置好?

#26


这样吧,你把program files/winrar目录下的rar.exe拷贝到系统system32目录下吧

#27


你得把我批处理里面的
if %%i LSS %ref% echo %%l

修改成

if %%i LSS %ref% rmdir /s /q %%l

#28


我修改成
if %%i LSS %ref% rmdir /s /q %%l
还是不能删除该文件夹下的.txt文件
??

#29


if %%i LSS %ref% rmdir /s /q %%l

修改成if %%i LSS %ref% rmdir /s /q d:\xtmp\tmp\%%l


#30


晕呀,还是
if %%i LSS %ref% rmdir /s /q d:\xtmp\tmp\%%l
修改成

if %%i LSS %ref% del /f d:\xtmp\tmp\%%l

#31


不錯,記下了!

#32


我试过了,这下可以了,真的删除了,呵呵:)
不过删除date()-1的文件,是删除一天以前的,昨天的文件还是保留的,呵呵:)
谢谢!!!

#33


但是出现一个很奇怪的问题,我用汉字命名的文本文件,为什么删除不了?

#34


出现一个很奇怪的问题,我用汉字命名的文本文件,为什么删除不了?