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

[文件操作] 如何查找目录中文件名为指定格式的文件

如题:
小弟有个目录 里面的文件中要处理的是
output_000100.txt    output_000150.txt      output_000200.txt .....
也就是格式是 output_数字.txt 这种格式的  数字是六位的   不足的补零,
我写了代码 结果什么效果也没有
哪位帮忙指点一下
  1. @echo off
  2. cls
  3. set pa="f:\test"
  4. for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9]*.txt"') do (
  5. echo %pa%\%%a
  6. )
  7. pause
复制代码
另外,我处理的顺序应该按照 数字的大小排序的,我目前采用的 dir /on 就是按照文件名排序
有更准确的方法吗?
在线急等!

[ 本帖最后由 jasonshaw 于 2009-7-31 23:35 编辑 ]

回复 6楼 的帖子

批处理中的正则表达式功能非常有限,无法使用{0,6}这种高级用法。可以这样匹配六位数字:
[0-9][0-9][0-9][0-9][0-9][0-9]
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6楼 的帖子

至于findstr的基本用法,可以在本论坛搜索findstr
看我搜索到得,是否对你有帮助:
http://bbs.bathome.net/viewthrea ... p;highlight=findstr
http://bbs.bathome.net/viewthrea ... p;highlight=findstr
(*^_^*)

TOP

回复 5楼 的帖子

呵呵,实在不好意思,我对findstr的正则表达式没有仔细研究过,我给出2楼的代码,只是由楼主给出的代码基础上,稍作修改,进行测试,基本可以实现,就给出了2楼的代码。

关键还是正则表达式知识是比较难的,看来还得好好研究研究。
(*^_^*)

TOP

原帖由 Batcher 于 2009-8-1 00:25 发表
你这个正则表达式有问题吧,无法精确匹配6位数字。


我加上 {0,6} 发现就没有匹配的了
不知道该如何加上 数字位数的限制

还有就是 为什么 是 .* 加了点 就好用了?百思不得其解啊!

TOP

回复 2楼 的帖子

你这个正则表达式有问题吧,无法精确匹配6位数字。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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 编辑 ]

TOP

  1、“处理”是个十分宽泛的概念,请给出具体含义——不要试图通过代码让别人理解你“处理”的含义,一来别人没那么好的耐心猜谜,二来你的代码本身就是有错误的,是不可靠的;
  2、“数字”有没有什么规律?长度有什么范围限制吗?
  3、请把修正后的内容更新到顶楼,以方便后来的人阅读。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 1楼 的帖子

把你的代码:
for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9]*.txt"') do (


修改个小地方:
  1. for /f "delims=" %%a in ('dir /b/on %pa%^|findstr /x "^output_[0-9].*.txt"') do (
复制代码
就是在*前面加个点(.)
(*^_^*)

TOP

返回列表