标题: findstr 查找文件内容不含某字符的文件名
[打印本页]
作者: 26933062
时间: 2008-4-23 08:39
标题: findstr 查找文件内容不含某字符的文件名
我用 findstr /mv "60" *.txt
怎么会显示所有的文件名?
我的本意是查找文件中不含 60 的文件名,
请问是 命令语法用的不对吗?
或者有什么其它的方法吗?效率高点的?
作者: bat-zw
时间: 2008-4-23 09:54
直接delims=60不行吗?
findstr /mv "60" *.txt是不是要写成findstr /m /v "60" *.txt。
[
Last edited by zw19750516 on 2008-4-23 at 10:04 AM ]
作者: zh159
时间: 2008-4-23 10:18
试试这个
for /f "delims=" %%i in ('dir/b *.bat') do findstr /i "60" %%i>nul||echo %%i
作者: 26933062
时间: 2008-4-23 10:32
Quote: |
Originally posted by zh159 at 2008-4-23 10:18:
试试这个
for /f "delims=" %%i in ('dir/b *.bat') do findstr /i "60" %%i>nul||echo %%i |
|
谢谢,不过有上千个文件,这样用findstr 命令,可能效率会很慢吧。
就是不想用for ,其实文件中含 60 的都在最后一行,findstr 可以通过这个来完成吗?
作者: zh159
时间: 2008-4-23 11:45
Quote: |
Originally posted by 26933062 at 2008-4-23 10:32:
谢谢,不过有上千个文件,这样用findstr 命令,可能效率会很慢吧。
就是不想用for ,其实文件中含 60 的都在最后一行,findstr 可以通过这个来完成吗? |
|
最后一行只有 60 的
@echo off
for /f "delims=" %%i in ('dir/b *.txt') do (
for /f %%j in (%%i) do set str=%%j
call :lp "%%i"
)
pause
exit
:lp
if not "%str%" == "60" echo %~1
goto :eof
试试这个,2k2个文件用了差不多50秒
@echo off
for /f "delims=" %%i in ('dir/b *.txt') do set $%%~nxi=$
for /f "delims=" %%i in ('findstr /im "60" *.txt 2^>nul') do set $%%~nxi=
for /f "delims=$=" %%i in ('set $') do echo %%i
pause
exit
作者: knoppix7
时间: 2008-4-23 11:47
dir c:\*.* /s /b|find /v "60"
作者: abcd
时间: 2008-4-23 11:53
/V 显示所有未包含指定字符串的行。
楼上的只会显示一堆文件内容。
其实如果只为了提高作业效率,可以用用其他工具嘛
没必要一棵树上吊死