中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]帮助分析查找指定日期的文件代码错在哪里?
« [1] [2] »
作者:
标题: [求助]帮助分析查找指定日期的文件代码错在哪里? 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  [求助]帮助分析查找指定日期的文件代码错在哪里?

代码如下:
@echo off
:finddate
cls
set  /p  fdate=请输入查询日期(例:2008-10或2008-10-18)   
set  /p  fname=请输入查询文件类型(例:.exe或.bat)   
for  %%a  in (c: d:)  do (
    for /r %%a\ %%b in ('dir /a /s /b %fname% | findstr /tc /4 %fdate%')  do (
           echo  %%b >>test.txt
           start  test.txt
    )
)
pause
goto finddate

2008-10-29 21:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

把@echo off删除
看看运行结果
如果还是不明白就把结果贴出来请人帮忙



2008-10-30 00:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:  

|前加^



简单!简单!再简单!
2008-10-30 00:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 4 楼』:  

把@echo off去掉后执行,先后显示要求输入查询日期和查询类型文件,我分别输入:
2008-10
.bat
之后就是一闪退出批处理执行的CMD窗口,实在是没有其它什么现象。

另外,我已经在  |前加了转义字符^,不行。

2008-10-30 10:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

把@echo off去掉
代码保存为C:\test.bat
开始
运行
cmd
C:\test.bat
结果如何?



2008-10-30 10:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 6 楼』:  

感觉干这事速度比较慢,不如用 Windows 自带的搜索。

2008-10-30 10:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 7 楼』:  

照做了,以下是测试问题:
1.CMD下提示第2个for语句不应有%%a\,它多余了,去掉它。
2.再测试,提示不应有:|,嘿!又忘加^了,加上。
3.再测试,嘿,CMD一直滚屏,不断打开记事本,发现start test.txt放在了不应该放的for循环中,把它提到for循环外。
4.在测试,没有错误提示了,但CMD窗口一直在滚动,模糊看到 echo ,应该是
echo  %%b >>test.txt发生作用,但它为什么不停啊!我执行的查找2008-10在C盘下建立的.bat文件,后来我实在没有办法,ctrl+c强行终止它,发现test.txt文本内容是很乱,根本没有我要找的.bat,我摘取其部分内容,如下:
C:\'dir
C:\/a
C:\/s
C:\/b
C:\.exe
C:\|
C:\findstr
C:\/tc
C:\/4
C:\2008-10'
C:\BIOSME\'dir
C:\BIOSME\/a
C:\BIOSME\/s
C:\BIOSME\/b
C:\BIOSME\.exe
C:\BIOSME\|
C:\BIOSME\findstr
C:\BIOSME\/tc
C:\BIOSME\/4
C:\BIOSME\2008-10'
C:\COMPAQ\'dir
C:\COMPAQ\/a
C:\COMPAQ\/s
C:\COMPAQ\/b
C:\COMPAQ\.exe
C:\COMPAQ\|
C:\COMPAQ\findstr
C:\COMPAQ\/tc
C:\COMPAQ\/4
C:\COMPAQ\2008-10'
C:\COMPAQ\AClient\'dir
C:\COMPAQ\AClient\/a
C:\COMPAQ\AClient\/s
C:\COMPAQ\AClient\/b
C:\COMPAQ\AClient\.exe
C:\COMPAQ\AClient\|
C:\COMPAQ\AClient\findstr
C:\COMPAQ\AClient\/tc
C:\COMPAQ\AClient\/4
C:\COMPAQ\AClient\2008-10'
C:\COMPAQ\Acrobat_Reader\'dir
C:\COMPAQ\Acrobat_Reader\/a
C:\COMPAQ\Acrobat_Reader\/s
C:\COMPAQ\Acrobat_Reader\/b
C:\COMPAQ\Acrobat_Reader\.exe
C:\COMPAQ\Acrobat_Reader\|
C:\COMPAQ\Acrobat_Reader\findstr
C:\COMPAQ\Acrobat_Reader\/tc
C:\COMPAQ\Acrobat_Reader\/4
C:\COMPAQ\Acrobat_Reader\2008-10'
C:\COMPAQ\Audio\'dir
C:\COMPAQ\Audio\/a
C:\COMPAQ\Audio\/s
C:\COMPAQ\Audio\/b
C:\COMPAQ\Audio\.exe
C:\COMPAQ\Audio\|
C:\COMPAQ\Audio\findstr
C:\COMPAQ\Audio\/tc
C:\COMPAQ\Audio\/4
C:\COMPAQ\Audio\2008-10'
C:\COMPAQ\Audio\Realtek\'dir
C:\COMPAQ\Audio\Realtek\/a
C:\COMPAQ\Audio\Realtek\/s
C:\COMPAQ\Audio\Realtek\/b
C:\COMPAQ\Audio\Realtek\.exe
C:\COMPAQ\Audio\Realtek\|
C:\COMPAQ\Audio\Realtek\findstr
C:\COMPAQ\Audio\Realtek\/tc
C:\COMPAQ\Audio\Realtek\/4
C:\COMPAQ\Audio\Realtek\2008-10'
C:\COMPAQ\Audio\Realtek\Config\'dir
C:\COMPAQ\Audio\Realtek\Config\/a
C:\COMPAQ\Audio\Realtek\Config\/s
C:\COMPAQ\Audio\Realtek\Config\/b
C:\COMPAQ\Audio\Realtek\Config\.exe
C:\COMPAQ\Audio\Realtek\Config\|
C:\COMPAQ\Audio\Realtek\Config\findstr
C:\COMPAQ\Audio\Realtek\Config\/tc
C:\COMPAQ\Audio\Realtek\Config\/4
C:\COMPAQ\Audio\Realtek\Config\2008-10'
C:\COMPAQ\Audio\Realtek\WDM\'dir
C:\COMPAQ\Audio\Realtek\WDM\/a
C:\COMPAQ\Audio\Realtek\WDM\/s
C:\COMPAQ\Audio\Realtek\WDM\/b
C:\COMPAQ\Audio\Realtek\WDM\.exe
C:\COMPAQ\Audio\Realtek\WDM\|
C:\COMPAQ\Audio\Realtek\WDM\findstr
C:\COMPAQ\Audio\Realtek\WDM\/tc
C:\COMPAQ\Audio\Realtek\WDM\/4
C:\COMPAQ\Audio\Realtek\WDM\2008-10'
C:\COMPAQ\chipset\'dir
C:\COMPAQ\chipset\/a
C:\COMPAQ\chipset\/s
C:\COMPAQ\chipset\/b
C:\COMPAQ\chipset\.exe
C:\COMPAQ\chipset\|
C:\COMPAQ\chipset\findstr
C:\COMPAQ\chipset\/tc
C:\COMPAQ\chipset\/4
C:\COMPAQ\chipset\2008-10'
C:\COMPAQ\DotNet\'dir
C:\COMPAQ\DotNet\/a
C:\COMPAQ\DotNet\/s
C:\COMPAQ\DotNet\/b
C:\COMPAQ\DotNet\.exe
C:\COMPAQ\DotNet\|
C:\COMPAQ\DotNet\findstr
C:\COMPAQ\DotNet\/tc
C:\COMPAQ\DotNet\/4
C:\COMPAQ\DotNet\2008-10'
C:\COMPAQ\Drivers\'dir
C:\COMPAQ\Drivers\/a

请帮我指正错误。

2008-10-30 11:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 7楼

请养成一个好习惯:把最新的代码更新到顶楼。
否则别人想帮你,还得copy顶楼的代码再根据你每个楼层的描述修改,是不是很浪费时间呢?



2008-10-30 11:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  

findstr /tc /4 参数问题哦



简单!简单!再简单!
2008-10-30 11:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 10 楼』:  

怎么才能再将1楼的代码更新呢?

2008-10-30 14:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kgdetg1127
初级用户





积分 158
发帖 89
注册 2007-4-25
状态 离线
『第 11 楼』:  

点右边的编辑,

2008-10-30 14:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:  Re 10楼

» HAT:  登出 | 短消息 | 我的话题 | 控制面板 | 系统设置 | 命令行 | 会员 | 搜索 | 上传 | 统计 | 帮助



2008-10-30 14:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 13 楼』:  

改一下
@echo off
:finddate
cls
set /p fdate=请输入查询日期(例:2008-10或2008-10-18)   
set /p fname=请输入查询文件类型(例:exe或bat)   
for %%a in (c: d:) do (
    for /F "delims=" %%b in ('dir /a-d /s /tc /4 %%a\*.%fname% ^| findstr "^%fdate%"') do (
           echo  %%b >>test.txt
    )
)
start  test.txt
pause
goto finddate




简单!简单!再简单!
2008-10-30 15:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 14 楼』:  

成功了,谢谢!
不过我还有转义字符的问题?
1.为什么要在|前加^呢?转义字符不是要取消特殊符号的功能吗?而我需要|执行特定的功能!
2.^%fdate%又是什么意思呢?用%fdate%不就可以识别这个变量了吗?如果加为什么不是^%fdate^%呢?后面的%就不需要转义了吗?

2008-10-30 17:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 15 楼』:  Re 14



  Quote:
2.^%fdate%又是什么意思呢?用%fdate%不就可以识别这个变量了吗?如果加为什么不是^%fdate^%呢?后面的%就不需要转义了吗?

^ 表示在行首进行匹配。具体请看 findstr /? 的帮助。

2008-10-30 17:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: