关于批处理删除空文件夹指定文件问题

[已解决]批处理删除文件夹下txt文本的指定内容 - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子11&积分26&技术0 &捐助0 &注册时间&
[已解决]批处理删除文件夹下txt文本的指定内容
本帖最后由 删除记忆002 于
12:40 编辑
比如在e:\www 以及www下还有很多子文件夹,每个子文件夹都有一个a.txt文本,
请问如何批量删除所有子文件夹下a.txt文本中指定的文字?
感谢给帖子标题标注[已解决]字样PB + 2
帖子2628&积分6561&技术274 &捐助0 &注册时间&
能否举个例子说明一下删除之前和删除之后a.txt分别是什么样子的
sed.exe gawk.exe 下载地址:
帖子995&积分2869&技术211 &捐助160 &注册时间&
fr &e:\www\a.txt& -s -f:&指定的文字& -t复制代码fr 下载地址:
帖子11&积分26&技术0 &捐助0 &注册时间&
& & a.txt之前& &书名& &计算机网络& & 价格& &34& & 时间& &2014年
& & 删除之后a.txt& &&&书名& &计算机网络&&价格&&34
& &a.txt是所有子文件夹里都有的文件
帖子11&积分26&技术0 &捐助0 &注册时间&
& & @echo off
findstr /i /v /g:&a.txt& &b.txt&&&end.txt
ren end.txt b.txt
我用的是这段代码,不过他只能删除同个目录下的b.txt文本,子文件夹里的b.txt没作用,要怎么修改呢
帖子2628&积分6561&技术274 &捐助0 &注册时间&
删除记忆002
请确认一下删除之前a.txt是下面哪种格式
书名& &计算机网络& & 价格& &34& & 时间& &2014年书名& &计算机网络
时间& &2014年书名
计算机网络
sed.exe gawk.exe 下载地址:
帖子11&积分26&技术0 &捐助0 &注册时间&
& & 删除之前的a.txt文本如下:
& &书名& &计算机网络& & 价格& &34& & 时间& &2014年
帖子2628&积分6561&技术274 &捐助0 &注册时间&
@echo off
for /f && %%i in ('dir /b /s /a-d &e:\www\a.txt&') do (
& & sed -i &s/时间& &2014年//& &%%i&
)复制代码
问题解决了技术 + 1
sed.exe gawk.exe 下载地址:
帖子11&积分26&技术0 &捐助0 &注册时间&
上面那个for循环里面是set吧?
运行后出现这个错误:环境变量 -i &s/时间& &&&2014//& &e:\www\fdf\新建文本文档.txt& 没有定义
帖子11&积分26&技术0 &捐助0 &注册时间&
& & @echo off
& & for /f && %%i in ('dir /b /s /a-d &e:\www\b.txt&') do (
& && &&&e:\www\sed.exe -i &s/时间& &2014年//& &%%i&
&&运行这段代码后,b.txt文本里面的:时间&&2014年还在,并没有去掉
帖子2628&积分6561&技术274 &捐助0 &注册时间&
删除记忆002
& & 把你的b.txt压缩一下传上来我试试
sed.exe gawk.exe 下载地址:
帖子11&积分26&技术0 &捐助0 &注册时间&
& & 问题解决了,是我把文字输错,谢谢。
帖子2628&积分6561&技术274 &捐助0 &注册时间&
你好,我还有个问题想请教你,通过下面这段代码修改过的文件,其文件夹的修改时间都是相同的,有没有办法使其不同。
文件名& &&& 12:23
文件名& &&& 12:23
加个延时试试@echo off
for /f &delims=& %%i in ('dir /b /s /a-d &e:\www\a.txt&') do (
& & echo 正在处理文件 %%i
& & sed -i &s/时间& &2014年//& &%%i&
& & ping -n 70 127.1 &nul
)复制代码另外,有问题直接在论坛回帖就行了,请不要给我发私信。
sed.exe gawk.exe 下载地址:
帖子11&积分26&技术0 &捐助0 &注册时间&
& & 好的,问题解决了,十分感谢
帖子11&积分26&技术0 &捐助0 &注册时间&
& & 又有个新问题,有很多个文件夹比如名字为&&dddd
& && && && && && && && && && && && && && && && && && && && && & ccc
& & 如何把文件夹名字变成&&dddd--& &
& && && && && && && && && && && && &ccc--
& &也就是在每个文件夹名后加上--
[通过 QQ、MSN 分享给朋友]页面导航:
→ 正文内容
用批处理实现的删除特定时间以前的文件
使用for命令读取dir&/tc&/o-d&/a的结果,可以分成4段,前两段为日期与时间,第3段为目录或文件大小,第4段为文件名或目录名。然后根据第1段和第2段与需要的时间进行比较,决定是否删除文件 @echo&off rem&cd&/d&f:\temp rem&mDateTime格式:&yyymmddHHmm set&mDateTime= for&/f&"skip=4&tokens=1,2,3,4*&delims=&&"&%%i&in&('dir&/a&/-c&/tc&/o-d')&do&call&:proc&%%i&%%j&%%k&%%l goto&end :proc set&aDate=%1 set&aTime=%2 set&aType=%3 set&aFile=%4 set&aDatetime=%aDate:~0,4%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2% if&/i&"%aDateTime%"&lss&"%mDateTime%"&(if&NOT&"%aType%"=="DIR"&attrib&"%aFile%"&-r&-h&-s&&&&del&"%aFile%") :end 但上面会有点问题,主要是因为if不能做大的数字的比较,对if来说太大了。我们可以先比较日期,再比较时间,但if语句比较多,还是折中一下,采用两位年份: rem&mDateTime格式:&ymmddHHmm set&mDateTime= …… set&aDatetime=%aDate:~2,2%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2% Windows2003有一个命令Forfiles,如:& Forfiles&/D&-30&/C&"cmd&/c&echo&@fname&是30天前的。2000下可以把2003的Forfiles.exe文件拷过来用。& 另外如果保留最近n个文件,就比较简单了,如,保留最近30个bak文件:& for&/f&"skip=30"&%i&in&('dir&*.bak&/tc&/o-d&/b')&do&del&%i& 批处理中,要把%i 改为%%i
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910在windows下面怎么写批处理文件,删除某文件夹下五天以前的文件?
[问题点数:20分,结帖人cowbaby]
在windows下面怎么写批处理文件,删除某文件夹下五天以前的文件?
[问题点数:20分,结帖人cowbaby]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2007年7月 Windows专区大版内专家分月排行榜第二2007年4月 Windows专区大版内专家分月排行榜第二
2006年1月 Windows专区大版内专家分月排行榜第三2005年10月 Windows专区大版内专家分月排行榜第三2005年9月 Windows专区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。您还未登陆,请登录后操作!
如何用写字板建立一个批处理文件
比如:在记事本里打入
echo 正在删除……
del d:\1.txt
echo .pause
另存为a.bat就行了
其中1.txt 就是要删除的文件
原因,并没有修改扩展名。
方法1:写好代码后,另存为,文件类型选择“所有文件”,名称写a.bat
方法2:打开我的电脑-&工具-&文件夹选项-&查看-&隐藏...
大家还关注页面导航:
→ 正文内容 bat删除指定天数的文件夹
批处理bat删除指定天数日期之前的文件夹
为了网站备份,服务器备份了很多文件,为了防止备份过大,特需要删除以前的一些文件,这里就为大家分享下删除指定天数的文件夹,需要的朋友可以参考下
【方案一】BAT + REG + VBS
::演示:删除指定路径下指定天数之前(以文件夹的最后修改日期为准)的文件夹。
::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除。
::本例调用了临时VBS代码进行日期计算
::本例为兼容不同的日期格式,调用reg命令(XP系统自带)统一设置日期格式,
::处理完毕之后再把日期格式恢复成原来的状态。
rem 指定待删除文件夹的存放路径
set SrcDir=C:/Test
rem 指定天数
set DaysAgo=1
for /f "skip=2 delims=" %%a in ('reg query "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate') do (
&&& set "RegDateOld=%%a"
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate /t REG_SZ /d yyyy-M-d /f&nul
&"%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 /d&&& %%a in ("%SrcDir%/*.*") do (
&&& if "%%~ta" leq "%DstDate%" (
&&&&&&& if exist "%%a/"
&&&&&&&&&&& echo rd /s /q "%%a"
reg add "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate /t REG_SZ /d %RegDateOld% /f&nul
【方案二】BAT + REG + Ritchie Lawrence 日期函数
::演示:删除指定路径下指定天数之前(以文件夹的最后修改日期为准)的文件夹。
::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除。
::本例调用了 Ritchie Lawrence 的日期函数进行日期计算
::日期转换的核心算法请参考/thread-.html
::本例为兼容不同的日期格式,调用reg命令(XP系统自带)统一设置日期格式,
::处理完毕之后再把日期格式恢复成原来的状态。
rem 指定待删除文件夹的存放路径
set SrcDir=C:/Test
rem 指定天数
set DaysAgo=1
for /f "skip=2 delims=" %%a in ('reg query "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate') do (
&&& set "RegDateOld=%%a"
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate /t REG_SZ /d yyyy-M-d /f&nul
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
reg add "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate /t REG_SZ /d %RegDateOld% /f&nul
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%%DstMonth%%DstDay%
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
for /d&&& %%a in ("%SrcDir%/*.*") do (
&&& if "%%~ta" leq "%DstDate%" (
&&&&&&& if exist "%%a/"
&&&&&&&&&&& echo rd /s /q "%%a"
reg add "HKEY_CURRENT_USER/Control Panel/International" /v sShortDate /t REG_SZ /d %RegDateOld% /f&nul
:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF
:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
【方案三】BAT + VBS
::演示:删除指定路径下指定天数之前(以文件夹的最后修改日期为准)的文件夹。
::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除。
::本例调用了临时VBS代码进行日期计算,并统一设置系统日期格式,处理完毕
::之后再把日期格式恢复成原来的状态。摆脱了对reg命令(XP系统自带)的依赖。
rem 指定待删除文件夹的存放路径
set SrcDir=C:/test
rem 指定天数
set DaysAgo=1
&"%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 /d&&& %%a in ("%SrcDir%/*.*") do (
&&& if "%%~ta" leq "%DstDate%" (
&&&&&&& if exist "%%a/"
&&&&&&&&&&& echo rd /s /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"
【方案四】字符串截取
::演示:删除指定路径下指定天数之前(以文件夹名中包含的日期字符串为准)的文件夹。
::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除。
::本例假设文件夹名中包含的日期字符串(比如:Archive-)
rem 指定待删除文件夹的存放路径
set SrcDir=C:/test
rem 指定天数
set DaysAgo=1
&"%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%
setlocal enabledelayedexpansion
for /d& %%a in ("%SrcDir%/*.*") do (
& if "%%~ta" leq "%DstDate%" (
&&& set "FolderDate=%%~na"
&&& set "FolderDate=!FolderDate:~8,10!"
&&& if "!FolderDate!" leq "%DstDate%" (
&&&&&&& if exist "%%a/" (
&&&&&&&&&&& echo rd /s /q "%%a"
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910}

我要回帖

更多关于 批处理删除文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信