当前位置: 代码迷 >> Windows2000 >> 请问一个批处理有关问题
  详细解决方案

请问一个批处理有关问题

热度:4985   发布时间:2013-02-26 00:00:00.0
请教一个批处理问题
我想写一个批处理:

cd ./log/
cls
set count=0

rem find dirs begin with 20
for /f "delims=" %%m in ('dir /ad /o-d^|findstr "^20"') do ( 
set dirs=%%m
//这里这样做是因为好像有其他的信息被加入循环了
set dirstr=%dirs:~0,2%
if !dirstr! equ 20 (
set /a count=count+1
echo count %count%
if !count! gtr 10 (rd /s /q %%m)
)
)

cd ..就是在log目录下面保留最近日期的十个文件夹,删除其他的文件夹,但是怎么弄都不好用啊。。。

------解决方案--------------------------------------------------------
BatchFile code
@echo offsetlocal enabledelayedexpansioncd ./log/ cls set count=0 rem find dirs begin with 20 for /f "delims=" %%m in ('dir /ad /o-d^|findstr "^20"') do (   set dirs=%%m   //这里这样做是因为好像有其他的信息被加入循环了   set dirstr=!dirs:~0,2!  if !dirstr! equ 20 (     set /a count+=1     echo count !count!    if !count! gtr 10 (rd /s /q %%m)   ) )
------解决方案--------------------------------------------------------
你的需求就是保留10个日期较新的文件夹,其它的都删掉?

要是这样的话,你这个写得有点累赘了。你的要求看起来比较复杂,实则处理起来很简单的。

你的每一行都没有发挥出来最佳效果,没利用足,而且也不需要利用count的。

如果你的要求是我说的这样,给你写了一个,代码看下面,你相信就这么简单么,呵呵。

BatchFile code
@echo offcd .\logclsfor /f "tokens=1* delims=:" %%a in ('dir /b /ad /o-d^|findstr /n ".*"') do (if %%a gtr 10 (rd /s /q "%%b"))
  相关解决方案