中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-26 14:35
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一句话 "全盘"查找指定日期内的指定文件 查看 1,356 回复 12
楼 主 一句话 "全盘"查找指定日期内的指定文件 发表于 2008-03-03 19:00 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
下面代码还是有点烦,见6楼简洁代码 PS: 2008-3-6-12:40 plp626

查看根目录树内 2008年3月份 ... ... 的exe文件
创建的:(查病毒方便了)
cd\&(((dir/a/s/tc/4|sort)|findstr /bc:"2008-03")|findstr /ve \.)|findstr /e \.exe

写入的:(注意日期中间是两个空格)
cd\&(((dir/a/s/tw/4|sort)|findstr /bc:"2008-03-01  20:10")|findstr /ve \.)|findstr /e \.exe

访问的:
cd\&(((dir/a/s/ta/4|sort)|findstr /bc:"2008-03-01")|findstr /ve \.)|findstr /e \.exe


[ Last edited by plp626 on 2008-3-6 at 02:00 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lxmxn +4 2008-03-03 19:06
2 发表于 2008-03-03 19:07 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
不错,一行命令就可以搞定了。
3 发表于 2008-03-04 11:07 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
如果是查找特定格式文件,应该可以更简化:
cd\&dir/a/s/tc *.exe|findstr /bc:"2008-03"


既然是查找指定日期内的指定文件,可以不必使用sort排序
4 多谢zh159前辈指教. 现精简如下 发表于 2008-03-04 20:04 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
查看根目录树内 2008年3月份 ... ... 的exe文件:
创建的:
cd\&dir/a/s/tc/4 *.exe|sort|findstr /b "2008-03"

写入的注意日期中间是两个空格)
cd\&dir/a/s/tw/4 *.exe|sort|findstr /bc:"2008-03-01  20:10"

访问的:
cd\&dir/a/s/ta/4 *.exe|sort|findstr /b "2008-03-01"

查看c:盘内 2008年3月1日到3月6日访问的exe文件:
dir/a/s/ta/4 c:\*.exe|findstr /b "2008-03-0"|sort

查看当天访问的所有文件.
for /f "skip=1" %a in ('wmic logicaldisk where "drivetype=3"' do echo %a------------------&dir/a/ta/s %a\|findstr /b "%date:~,10%"|sort|findstr /ve \.


@echo off
set http=http://www.cn-dos.net/forum/viewthread.php?tid=38096
if "%1"=="/?" goto help
if "%1"=="/c" goto code
if "%1"=="/a" goto all
if "%3"=="" (set t3=%date:~5,5%) else set t3=%3
dir/a/s%1/4 %2|findstr /b "2008-%t3%"|findstr /ve \.|sort
goto :eof
:help
echo -------------------------
echo /c 看源代码
echo /a 全盘的,必须作为第一个参数
echo /ta 访问
echo /tw 修改
echo /tc 创建
echo 例:
echo 查找C盘当天所有 访问的 后缀名exe的文件
echo %~n0 /ta c:\*.exe
echo 查看当天全盘访问的所有文件
echo %~n0 /a /ta *.*(*.*可以省略)
echo 查找当前目录树下2008年3月1号到9号所有 修改的 文件名与*.??匹配的 文件
echo %~n0 /tw *.?? 03-0
echo 详细匹配见findstr /r参数.&echo 欢迎修改查询,并来%http%跟帖.
goto :eof
:all
shift
if "%3"=="" (set t3=%date:~5,5%) else set t3=%3
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=3"' do (
echo %%a------------------
dir/a/s%1/4 %%a\%2|findstr /b "2008-%t3%"|sort|findstr /ve \.
)
goto :eof
:code
more %~f0
ping /n 2 127.0>nul
start/max %http%&goto :eof

PS: 用sort是为了按时间先后顺序排序,不在乎时间顺序可以省略.

[ Last edited by plp626 on 2008-3-6 at 11:41 AM ]
5 发表于 2008-03-06 12:10 ·  中国 山东 济南 联通
高级用户
★★★
积分 959
发帖 474
注册 2007-10-25 10:40
18年会员
UID 100716
性别 男
状态 离线
写的很好,但是没有指明查到文件的路径!
6 发表于 2008-03-06 13:11 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
你结合for扩展变量试试.
为了代码的简洁没有给出,因为这些都是在命令行下随手输入用的.找到了要查找的文件,用dir/a/s/b *.*来查路径
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
7 发表于 2008-03-06 13:17 ·  中国 山东 济南 联通
高级用户
★★★
积分 959
发帖 474
注册 2007-10-25 10:40
18年会员
UID 100716
性别 男
状态 离线
这样太查找太麻烦,能不能搜索完之后能指明路径呢?
8 发表于 2008-03-06 13:28 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
@echo off
for /f "tokens=3*" %%a in ('dir/a/s/ta/4 *.exe^|findstr /b "2008-03-0"') do dir/a/s/b "%%b"
pause


现在优化一下:

@echo off
for /f "tokens=3*" %%a in ('dir/a/s/ta/4 *.exe^|findstr /b "2008-03-0"') do echo.%%~$PATH:b
pause


[ Last edited by plp626 on 2008-3-7 at 12:26 AM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
9 发表于 2008-03-06 13:57 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
用wmic是否可以更快??

回plp262兄,我没有批评的意思,我知道自己说错了,所以马上把帖子删除了

见谅见谅
10 发表于 2008-03-06 14:03 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
abcd兄说的是,第一个代码确实太慢,
对wmic我还不怎么了解.刚刚接触,模仿而已.
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
11 发表于 2008-03-06 14:04 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
不过第二个代码有严重缺陷,含空格路径的给抹掉了
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
12 发表于 2008-03-06 14:27 ·  中国 山东 济南 联通
高级用户
★★★
积分 959
发帖 474
注册 2007-10-25 10:40
18年会员
UID 100716
性别 男
状态 离线
Originally posted by plp626 at 2008-3-6 01:28 PM:
@echo off
for /f "tokens=3*" %%a in ('dir/a/s/ta/4 *.exe^|findstr /b "2008-03-0"') do dir/a/s/b "%%b"
pause


应abcd兄批评,现在优化一下: ...


第一个代码无法全盘搜索,第二个代码错误
13 发表于 2008-03-06 14:42 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
第一个是默认当前目录下搜索,你放在根目录下试试(全盘是逻辑盘)
若真要整个磁盘搜索,你结合6楼第5个代码改改,或直接用第6个代码的/a参数来做
第二个代码没错,我机子xpsp2
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
论坛跳转: