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

[文件操作] 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

我觉得是dir和findstr通配符通配效果不一样造成的

TOP

本帖最后由 /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
复制代码

排除批处理所在目录不包含下级目录

TOP

dir的水很深...
就简单的记住最多只能在文件名和扩展名中各出现一个*吧

TOP

我XP两个显示都一样的说
心累~努力,为了美好的明天。

TOP

回复 3# /zhqsystem/zhq


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

TOP

回复 4# bailong360


    恩,谢谢,其实我是想找到处理包含特定字符文件的高效率方法(用dir,move,copy 之类命令)。

TOP

回复 5# 尘丶


    我这是用WIN8.1 64bit

TOP

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

dir *1*.* 能匹配包含的字符1的文件名(包括短文件名)
超过8字符的短文件名后面一般有 ~1、~2 的标志
1

评分人数

    • ftg1: 帮我找到原因了,谢谢技术 + 1

TOP

回复 9# WHY


    可是不是1的也出来了,可能是汉字里也包含1的编码

TOP

回复 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>

TOP

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

TOP

返回列表