找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: lky216

[文件操作] 批处理如何删除某目录下的固定文件夹中指定日期的规则文件?[结帖]

[复制链接]
 楼主| 发表于 2013-4-14 21:36:19 | 显示全部楼层
回复 14# BAT-VBS

我弄了,打开提示 无可用范例
后来把enable那行去掉,提示

错误:
代码 = 0x80041017
说明 = 无效查询
设备 = WMI
错误:
代码 = 0x80041017
说明 = 无效查询
设备 = WMI
发表于 2013-4-14 23:10:09 | 显示全部楼层
回复 16# lky216
不行的话 只能FOR里比较文件时间后 DEL
 楼主| 发表于 2013-4-14 23:13:13 | 显示全部楼层
回复 17# terse

主要是跳过doc这个目录 不要搜索这个目录
其他的我就不懂了,我是小白,
发表于 2013-4-15 00:06:05 | 显示全部楼层
回复 18# lky216
这个呢?
代码如正常显示 去掉最后的 ECHO
运行前先备份
  1. @echo off
  2. set "fd=20130415000000"
  3. set "d=d:"
  4. set "p=\user"
  5. set "ext=log"
  6. for /f "tokens=*" %%p in ('dir /b /ad "%d%%p%"') do (
  7.     for /f "skip=1 tokens=1*" %%i in ('wmic datafile where "drive='%d%' and path='%p:\=\\%%%p\\log\\' and FileName like 'ex%%' and extension='%ext%'" get name^,LastModified') do (
  8.         for /f "tokens=1,2* delims=. " %%a in ("%%i %%j") do (
  9.            if "%%a" lss "%fd%" echo del "%%~fc"
  10.         )
  11.     )
  12. )
  13. pause
复制代码
 楼主| 发表于 2013-4-16 08:40:15 | 显示全部楼层
回复 19# terse


    十分感谢。如遇特殊情况需要再次麻烦您修改的,可以付费。
发表于 2013-4-16 13:16:33 | 显示全部楼层
回复 20# lky216


    下次去『有偿求助区』发帖吧
 楼主| 发表于 2013-4-16 14:02:01 | 显示全部楼层
本帖最后由 lky216 于 2013-4-16 14:11 编辑

回复 19# terse
没去掉echo的话,是正常的。中文的:"复件 ex20130415.log"就没有被删除,这个大概知道,是只查找英文的,我这边也是全英文的ex*.log
   
另外,把我批处理的同级目录文件删除了,在盘符根目录的三四个文件都删除了。去掉echo的话。- -
 楼主| 发表于 2013-4-16 14:03:23 | 显示全部楼层
本帖最后由 lky216 于 2013-4-16 14:41 编辑

回复 21# BAT-VBS


    不好结算。说给*元,怕到时候要修改。如果运行的时候,没有满足所说的功能的话,要修改
发表于 2013-4-16 14:16:37 | 显示全部楼层
回复 23# lky216


改功能就加钱呗
功能没实现就减钱或者不给钱呗
这有什么不好结算的
你发帖时说给50,最后你愿意给500,又不会有人拦着你。
发表于 2013-4-16 14:35:03 | 显示全部楼层
回复 22# lky216
你什么环境  按理 ECHO 正常的话 不会删除同级目录下文件 WMIC 处理 NAME 是绝对路径的
方便的话 贴下 ECHO 结果
 楼主| 发表于 2013-4-18 16:10:15 | 显示全部楼层
回复 25# terse


    最近忙死了。。。不好意思,一会我这边测试看看下给您回复。
 楼主| 发表于 2013-4-30 15:47:29 | 显示全部楼层
本帖最后由 lky216 于 2013-4-30 16:05 编辑

回复 25# terse


    文件夹 PATH 列表
卷序列号为 E094-8C28
C:.
│  1.txt
│  
└─user
    │  新建 文本文档.txt
    │  
    ├─liky
    │  │  新建 文本文档.txt
    │  │  
    │  ├─doc
    │  └─log
    │          ex20130430.log
    │         
    └─wxh
        │  新建 文本文档.txt
        │  
        ├─doc
        │      新建 文本文档.txt
        │      
        └─log
                ex20130430.log
            代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "fd=20130501000000"
  4. set "d=c:"
  5. set "p=\user"
  6. set "ext=log"
  7. for /f "tokens=*" %%p in ('dir /b /ad "%d%%p%"') do (
  8.     for /f "skip=1 tokens=1*" %%i in ('wmic datafile where "drive='%d%' and path='%p:\=\\%%%p\\log\\' and FileName

  9. like 'ex%%' and extension='%ext%'" get name^,LastModified') do (
  10.         for /f "tokens=1,2* delims=. " %%a in ("%%i %%j") do (
  11.            if "%%a" lss "%fd%" echo del "%%~fc"
  12.         )
  13.     )
  14. )
  15. pause
复制代码
echo结果
  1. del "c:\user\liky\log\ex20130430.log"
  2. del "c:\user\wxh\log\ex20130430.log"
  3. 请按任意键继续. . .
复制代码
可以了,去掉echo也可以了,谢谢。
当初显示和删除不一样。。。
标记下,日后回报。

另外,每N个客户如果没有日志文件的话,就会回显一行 无可用范例
把del的文件,echo保存为deldate.txt日志咯?
发表于 2013-4-30 19:47:10 | 显示全部楼层
linux 的 find.exe 可以这样:
  1. find.exe 目录 -mtime +40
  2. rem 搜索目录下修改日期在 40 天前的文件
复制代码
发表于 2013-4-30 21:01:54 | 显示全部楼层
这样可以不?
  1. @echo off
  2. for /f "delims=" %%a in ('xcopy /d:05-01-2013 /ls *.log c:\') do set "%%a=1"
  3. for /r %%a in (*.log) do if not defined %%a echo %%a
  4. Rem 查找2013年5月1日之前修改的文件
  5. pause
复制代码
 楼主| 发表于 2013-4-30 21:31:09 | 显示全部楼层
回复 28# CrLf


  谢谢,总是能学习到一些东东,从前辈这里。
  exe的,我搜索怎么说是微软的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:55 , Processed in 0.016348 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表