中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 07:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » FOR命令如何搜索一定大小(1~2M)的文件 查看 1,124 回复 6
楼 主 FOR命令如何搜索一定大小(1~2M)的文件 发表于 2008-10-30 20:25 ·  中国 安徽 芜湖 联通
初级用户
积分 32
发帖 14
注册 2008-10-26 20:01
17年会员
UID 129177
性别 男
状态 离线
我想搜索含有字符串"good"的文件,同时限定搜索文件的大小在1~2M之间。
该怎样使用FOR + FIND?
用过DOS的人
2 发表于 2008-10-31 01:22 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
先来说一下如何指定文件大小的范围,这是一个参数,不是某个具体的命令,而且这个参数差不多可以在许多操作对象是文件为参数的 4DOS 命令中使用,例如,指定大小在1~2M之间的文件,如果这里的 1M=1048576byte ,那么可以用 [s1M,2M] ;如果这里的 1M=1,000,000byte ,那么可以用 [s1m,2m];同样,k 和 K 的区别也是如此;你也可以指定具体字节数,比如 [s1024,2048] 。
具体到某个命令,比如查找文件大小为1M~2M之间的文件,可以
dir /[s1M,2M]
dir /[s1M,2M] *.txt

那么如何搜索字符串呢?是 FFIND 命令,搜索含有字符串"good"的文件,同时限定搜索文件的大小在1~2M之间可以这样用:
ffind /[s1M,2M] /t"good" *.*
3 发表于 2008-11-02 00:46 ·  中国 安徽 芜湖 联通
初级用户
积分 32
发帖 14
注册 2008-10-26 20:01
17年会员
UID 129177
性别 男
状态 离线
也就是说,在XP中cmd下,无法做到我想要的功能。
用过DOS的人
4 发表于 2008-11-02 00:50 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
Windows 中可以用 4NT 或 Take Command ,它们是 4DOS 在 Windows 下的继承。
5 Re 3楼 发表于 2008-11-02 10:38 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
那你应该到批处理室去提问^_^
6 发表于 2008-11-02 16:07 ·  中国 安徽 芜湖 联通
初级用户
积分 32
发帖 14
注册 2008-10-26 20:01
17年会员
UID 129177
性别 男
状态 离线
Originally posted by HAT at 2008-11-2 10:38:
那你应该到批处理室去提问^_^


谢谢。
用过DOS的人
7 发表于 2008-11-02 16:54 ·  中国 重庆 联通
中级用户
★★
积分 363
发帖 162
注册 2007-04-22 21:31
19年会员
UID 86104
性别 男
状态 离线
你怎么没转发到批处理室去呢,我还想去那找了回复呢,空跑了,以后这种问题还是去批处理室问吧,问对地方的得到的结果也快些!

if exist d:\查找结果.txt del/q/f d:\查找结果.txt
::FOR里 F:\test\*.lst 换成想查找的文件类型和路径
For /f "delims=" %%i In ('dir/s/b/d F:\test\*.lst') do (
set fpath=%%i
set size=%%~zi
call :2
)
start notepad.exe d:\查找结果.txt
exit

:2
if 1000000 LEQ %size% if %size% LEQ 2000000 (
echo.>>d:\查找结果.txt
echo 文件: >>d:\查找结果.txt
echo 大小: >>d:\查找结果.txt
find /i "这里换成你想查找的字符串" "%fpath%">>d:\查找结果.txt
goto :eof)


这里你至少改两处地方,
1、For /f "delims=" %%i In ('dir/s/b/d F:\test\*.lst') do (
上面这句红色标示的路径改成你想查找的路径和文件顾类型
2、find /i "这里换成你想查找的字符串" "%fpath%">>d:\查找结果.txt
这里红色标示改成你想查找的文字内容。
我测试通过 CMD@XP

[ Last edited by clian76 on 2008-11-2 at 17:00 ]
论坛跳转: