标题: [文本处理] [已解决]批处理如何搜索文件名长度为10个字符的txt文件 [打印本页]
作者: yy521b 时间: 2017-1-13 21:11 标题: [已解决]批处理如何搜索文件名长度为10个字符的txt文件
本帖最后由 yy521b 于 2017-1-14 09:05 编辑
请问批处理如何搜索长度为10个字符的txt文件!
我文件夹里有
cn51-0qhb2.txt
CN51-0qhb7.txt
cn51-0qhb59.txt
CN51-0Qhb58.txt
cn51-jkdlsadjksladjskal.txt
New Text Document.txt
这几个txt文件,当我用dir /b d:\test\?.txt 查找时显示File Not Found ,直到我用????????.txt前都显示File Not Found, 当我用dir /b d:\test\????????.txt上面的文件不管多少个字符都显示出来了!!
所以我想问如果我只搜索长度为10个字符的txt文件怎么办!
谢谢帮忙!
作者: WHY 时间: 2017-1-13 23:05
本帖最后由 WHY 于 2017-1-16 23:00 编辑
批处理中的 dir /b d:\test\????????.txt 默认搜索 0-8 个字符(包括8.3格式的短文件名),超过8个字符的短文件名一般都小于等于8个字符,实际上所有txt文件都被搜索出来了。
可以这样:- @echo off
- for /f "delims=" %%i in ('dir /b D:\Test\*.txt') do (
- set "s=%%~ni"
- setlocal enabledelayedexpansion
- if "!s:~8!" == "" if not "!s:~7!" == "" echo;!s!%%~xi
- endlocal
- )
- pause
复制代码
也可以这样:- PowerShell -c "(dir -Path D:\Test\????????.txt).Name"
复制代码
或者这样:- @if (0)==(0) echo off
- dir /b *.txt | cscript //nologo //e:jscript "%~f0"
- pause & exit
- @end
-
- WSH.StdOut.Write(WSH.StdIn.ReadAll().match(/^.{8}\.txt\r\n/gmi).join(''))
复制代码
如果不包含中文字符可以这样:- dir /b D:\Test\*.txt | findstr /i "^........\.txt$"
复制代码
作者: /zhqsystem/zhq 时间: 2017-1-13 23:31
- set n=10
- rem:n的范围1-8191
- set/a "o=%n%+1"
- for /f "delims=" %%i in ('type .\1.txt')do (set "c=0%%~ni"&&set "y="
- for /l %%n in (%n%,1,%o%)do if /i not "!c:~%%n,1!"=="" if "%%n"=="%n%" (set "y=1")else (set "y=")
- if defined y echo,%%i
- )
复制代码
作者: yy521b 时间: 2017-1-14 09:02
谢谢楼上两位,!问题解决,感谢!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |