请教一个批处理问题

cocowhb 2008-07-17 12:07:18
我想写一个批处理:

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目录下面保留最近日期的十个文件夹,删除其他的文件夹,但是怎么弄都不好用啊。。。
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2008-07-17
  • 打赏
  • 举报
回复
呵呵,已经是半成品;
Forever_Young 2008-07-17
  • 打赏
  • 举报
回复
你的需求就是保留10个日期较新的文件夹,其它的都删掉?

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

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

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

[code=BatchFile]
@echo off
cd .\log
cls
for /f "tokens=1* delims=:" %%a in ('dir /b /ad /o-d^|findstr /n ".*"') do (
if %%a gtr 10 (rd /s /q "%%b")
)
[/code]

ljc007 2008-07-17
  • 打赏
  • 举报
回复
[code=BatchFile]@echo off
setlocal enabledelayedexpansion
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+=1
echo count !count!
if !count! gtr 10 (rd /s /q %%m)
)
) [/code]

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧