标题: [文件操作] 如何查找目录中文件名为指定格式的文件 [打印本页]
作者: jasonshaw 时间: 2009-7-31 22:30 标题: 如何查找目录中文件名为指定格式的文件
如题:
小弟有个目录 里面的文件中要处理的是
output_000100.txt output_000150.txt output_000200.txt .....
也就是格式是 output_数字.txt 这种格式的 数字是六位的 不足的补零,
我写了代码 结果什么效果也没有
哪位帮忙指点一下- @echo off
- cls
- set pa="f:\test"
- for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9]*.txt"') do (
- echo %pa%\%%a
- )
- pause
复制代码
另外,我处理的顺序应该按照 数字的大小排序的,我目前采用的 dir /on 就是按照文件名排序
有更准确的方法吗?
在线急等!
[ 本帖最后由 jasonshaw 于 2009-7-31 23:35 编辑 ]
作者: keen 时间: 2009-7-31 22:57 标题: 回复 1楼 的帖子
把你的代码:
for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9]*.txt"') do (
修改个小地方:- for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9].*.txt"') do (
复制代码
就是在*前面加个点(.)
作者: namejm 时间: 2009-7-31 22:58
1、“处理”是个十分宽泛的概念,请给出具体含义——不要试图通过代码让别人理解你“处理”的含义,一来别人没那么好的耐心猜谜,二来你的代码本身就是有错误的,是不可靠的;
2、“数字”有没有什么规律?长度有什么范围限制吗?
3、请把修正后的内容更新到顶楼,以方便后来的人阅读。
作者: jasonshaw 时间: 2009-7-31 23:35 标题: 回复 2楼 的帖子
我试验了,增加一个 . 真的就好用了,请教为什么要增加个点呢?
还有一个小问题,
我想在指定 路径的时候 已经加了引号 避免里面有空格之类的
但是我希望是能够在 最后是输出
"f:\test\output_000100.txt" 而不是 "f:\test"\output_000100.txt 这样的
我在循环里面 添加 set pa=%pa:"=% 然后再 echo "%pa%\%%a" 结果没效果啊!
输出的还是 “"f:\test"\output_000100.txt”
[ 本帖最后由 jasonshaw 于 2009-7-31 23:43 编辑 ]
作者: Batcher 时间: 2009-8-1 00:25 标题: 回复 2楼 的帖子
你这个正则表达式有问题吧,无法精确匹配6位数字。
作者: jasonshaw 时间: 2009-8-1 01:50
原帖由 Batcher 于 2009-8-1 00:25 发表
你这个正则表达式有问题吧,无法精确匹配6位数字。
我加上 {0,6} 发现就没有匹配的了
不知道该如何加上 数字位数的限制
还有就是 为什么 是 .* 加了点 就好用了?百思不得其解啊!
作者: keen 时间: 2009-8-1 10:10 标题: 回复 5楼 的帖子
呵呵,实在不好意思,我对findstr的正则表达式没有仔细研究过,我给出2楼的代码,只是由楼主给出的代码基础上,稍作修改,进行测试,基本可以实现,就给出了2楼的代码。
关键还是正则表达式知识是比较难的,看来还得好好研究研究。
作者: keen 时间: 2009-8-1 10:12 标题: 回复 6楼 的帖子
至于findstr的基本用法,可以在本论坛搜索findstr
看我搜索到得,是否对你有帮助:
http://bbs.bathome.net/viewthrea ... p;highlight=findstr
http://bbs.bathome.net/viewthrea ... p;highlight=findstr
作者: Batcher 时间: 2009-8-1 11:26 标题: 回复 6楼 的帖子
批处理中的正则表达式功能非常有限,无法使用{0,6}这种高级用法。可以这样匹配六位数字:
[0-9][0-9][0-9][0-9][0-9][0-9]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |