Board logo

标题: [文件操作] dir 文件名通配符问题求助 [打印本页]

作者: ftg1    时间: 2015-10-3 22:18     标题: dir 文件名通配符问题求助

请教大师们一个关于文件名通配符的问题:

要显示文件名包含1的文件名
  1. dir /b /a-d "*1*.*"
复制代码
显示为:
1.txt
11.txt
111.txt
1测试.txt
dir_findstr.bat
一根据文件列表.txt
三根据当前目录.txt

测试11.txt

能不能用一个批量操作的命令达到下面的效果,只显示文件名包含1,文件名不包含1不显示(即dir_findstr.bat,一根据文件列表.txt,三根据当前目录.txt不显示):
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a-d^|findstr 1') do (
  3. echo %%a
  4. )
复制代码
只显示文件名包含1的:
1.txt
11.txt
111.txt
1测试.txt
测试11.txt
作者: ftg1    时间: 2015-10-3 22:22

我觉得是dir和findstr通配符通配效果不一样造成的
作者: /zhqsystem/zhq    时间: 2015-10-3 23:25

本帖最后由 /zhqsystem/zhq 于 2015-10-4 00:06 编辑

没看清题目(多包涵)修改后的代码:
  1. @echo off
  2. for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z a b) do (
  3. if exist "%%i:\" (
  4.   for /f "delims=" %%j in ('dir/a-d/s/b/l/on "%%i:*1*.*"') do (
  5.    if /i not "%%~dpj"=="%~dp0" echo=%%j
  6.   )
  7. )
  8. )
  9. pause
复制代码

排除批处理所在目录不包含下级目录
作者: bailong360    时间: 2015-10-3 23:33

dir的水很深...
就简单的记住最多只能在文件名和扩展名中各出现一个*吧
作者: 尘丶    时间: 2015-10-4 12:36

我XP两个显示都一样的说
作者: ftg1    时间: 2015-10-4 20:56

回复 3# /zhqsystem/zhq


    谢谢哈,其实我只想显示批处理目录下的文件,解决了的话同时可以应用于move,copy之类的。
    我单独提取出dir/a-d/s/b/l/on "*1*.*",效果也是一样,也显示不包含1的文件。
作者: ftg1    时间: 2015-10-4 20:59

回复 4# bailong360


    恩,谢谢,其实我是想找到处理包含特定字符文件的高效率方法(用dir,move,copy 之类命令)。
作者: ftg1    时间: 2015-10-4 21:00

回复 5# 尘丶


    我这是用WIN8.1 64bit
作者: WHY    时间: 2015-10-5 14:32

本帖最后由 WHY 于 2015-10-5 14:35 编辑

dir *1*.* 能匹配包含的字符1的文件名(包括短文件名)
超过8字符的短文件名后面一般有 ~1、~2 的标志
作者: ftg1    时间: 2015-10-6 17:27

回复 9# WHY


    可是不是1的也出来了,可能是汉字里也包含1的编码
作者: WHY    时间: 2015-10-6 22:18

回复 10# ftg1


   
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd /d E:\test

E:\test>dir /x /a-d
驱动器 E 中的卷是  娱乐
卷的序列号是 000B-C444

E:\test 的目录

2015/10/06  22:11                 0              1.txt
2015/10/06  22:11                 0              1测试.txt
2015/10/06  22:11                 0 DIR_FI~1.BAT dir_findstr.bat
2015/10/06  22:11                 0 一根据~1.TXT 一根据文件列表.txt
2015/10/06  22:11                 0 一根据~2.TXT 一根据文件列表a.txt
2015/10/06  22:11                 0              测试1.txt
               6 个文件              0 字节
               0 个目录 198,364,561,408 可用字节

E:\test>dir /b /a-d *1*.*
1.txt
1测试.txt
dir_findstr.bat
一根据文件列表.txt
测试1.txt

E:\test>dir /b /a-d *2*.*
一根据文件列表a.txt

E:\test>dir /b /a-d *~*.*
dir_findstr.bat
一根据文件列表.txt
一根据文件列表a.txt

E:\test>

作者: ftg1    时间: 2015-10-8 08:40

回复 11# WHY
谢谢,那是这个问题了,能解决么?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2