找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 40143|回复: 15

[ 新手练习题 6 ]批处理检查文本中是否存在某字串

[复制链接]
发表于 2009-6-22 13:15:48 | 显示全部楼层 |阅读模式
[ 新手练习题 6 ] 检查文本中是否存在某字串
检查下列文本文件中是否存在“批处理之家”字符串,显示出含有该字串的文件名。
其中字符串与文本文件均可自行构建。
cn.txt
  1. 欢迎来到批处理之家
  2. 欢迎来到新手练功区
复制代码
en.txt
  1. 欢迎来到BATHOME
  2. 欢迎来到新手练功区
复制代码
目的:掌握判断文本中是否含有字符串的方法,用于查找文件等实际用途。

要求:可自行创建多个文件进行查找。可利用外部命令,当然也可不用。
   若是自已构建,请将查找的字串写出来,还有示例文本。
   方法不限。

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
发表于 2009-6-22 17:46:53 | 显示全部楼层
以下是代码,没有考虑特殊字符,不知有没有考虑周全?

  1. 1.txt
  2. abndabcdnd

  3. 2.txt
  4. abndabcnd

  5. 2 3.txt
  6. abndabcsdabcdnd
复制代码

  1. @echo off
  2. for /r %%i in (*.txt) do (findstr /c:"abcd" "%%~nxi">nul&&echo %%~nxi)
  3. pause>nul
复制代码

[ 本帖最后由 rodane_13 于 2009-6-22 18:18 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 不错,请将自己构造的文本和字串列出来。

查看全部评分

发表于 2009-7-13 01:55:23 | 显示全部楼层
  1. @echo off
  2. for /r %%a in (*.txt) do findstr /r "\<批处理之家\>" "%%a" >nul && echo %%~nxa
  3. pause
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 很好,继续。

查看全部评分

发表于 2009-8-13 17:01:18 | 显示全部楼层
  1. @echo off
  2. set /p a=请输入查找的关键字:
  3. for /F "tokens=1 delims=:" %%i in ('findstr /C:%a% *.txt ') do echo  %%i
复制代码

评分

参与人数 1PB +4 收起 理由
wxcute + 4 不错哦。

查看全部评分

发表于 2009-8-24 09:07:24 | 显示全部楼层
a.txt:

批处理之家是一个很好的批处理学习平台!!!

代码:
  1. @echo off
  2. for /r %%i in (*.txt) do  findstr /c:批处理之家 "%%i">nul && echo %%~nxi
  3. pause>nul
复制代码
发表于 2009-8-25 11:38:45 | 显示全部楼层
一条命令就可以解决:
FOR /F "TOKENS=2 DELIMS= " %C IN ('FIND /C /I "批处理之家" *.TXT') DO @ECHO %~NC.TXT

不过如果文件名有空格就不好用了,可以用下一个方法

@echo off
for /f "delims=" %%c in ('dir /b /a-d *.txt') do (
find /c /i "批处理之家"  "%%c" >nul
if not errorlevel 1 echo %%c
)
pause

[ 本帖最后由 DXSX 于 2009-8-25 17:43 编辑 ]
发表于 2010-7-19 22:29:45 | 显示全部楼层
答:
是这样么...
  1. @echo off
  2. call :find cn.txt
  3. call :find en.txt
  4. pause
  5. exit
  6. :find
  7. for /f " delims=:" %%i in ('findstr "批处理之家" "%1"') do echo %1
  8. goto :eof
复制代码

===========
end;
发表于 2010-9-12 04:29:27 | 显示全部楼层
  1. @echo off
  2. cd\
  3. c:
  4. findstr 批处理之家 1.txt
  5. rem:1.txt的内容就是cn.txt,2.txt的内容就是en.txt。
  6. if %errorlevel%==0 goto y
  7. if %errorlevel%==1 goto n
  8. :y
  9. echo 这是1.txt。
  10. pause
  11. exit
  12. :n
  13. findstr 批处理之家 2.txt
  14. if %errorlevel%==0 echo 这是2.txt。

  15. pause
  16. exit
复制代码
发表于 2010-9-12 15:25:29 | 显示全部楼层
  1. @echo off
  2. set /p words=input the word you want to find in files:
  3. set /p files=input the range you want to define:
  4. if "%files:~-4%"==".txt" findstr /n /c:"%words%" "%files%"&pause>nul&goto :eof
  5. for /f "delims=" %%a in ('dir  /s /b %files%\*.txt') do (
  6. findstr /n /c:"%words%" "%%a">tmps.txt && echo %%a
  7. for /f "tokens=1,2 delims=:" %%b in (tmps.txt) do echo %%c  line:%%b
  8. )
  9. del tmps.txt /q 2>nul
  10. pause>nul
复制代码
发表于 2010-10-13 20:40:18 | 显示全部楼层
  1. @echo off
  2. find "批处理之家" <cn.txt
  3. if %errorlevel%==0 (echo 该字符串在cn.txt中) else (find "批处理之家" <en.txt)&if %errorlevel%==o (echo ^
  4. 该字符串在en.txt中)
  5. pause >nul
复制代码

[ 本帖最后由 meihaodehuiyi 于 2010-10-15 08:28 编辑 ]

评分

参与人数 1PB -2 收起 理由
Batcher -2 请编辑自己的帖子,把代码放到code标签里面 ...

查看全部评分

发表于 2011-5-30 09:45:53 | 显示全部楼层

  1. @echo off
  2. findstr "批处理之家" *.txt
  3. pause
复制代码
发表于 2011-6-8 21:39:28 | 显示全部楼层
3# 风行者

请教楼上:for /r %%a in (*.txt) do findstr /r "\<批处理之家\>" "%%a" >nul && echo %%~nxa
这句中"%%a" >nul 的做用与 echo %%~nxa 中的~nx又是什么意思
没看懂,请教下
发表于 2011-7-19 16:49:16 | 显示全部楼层
本帖最后由 Hello123World 于 2011-7-19 16:52 编辑

1# wxcute
  1. @echo off
  2. for /r %%i in (*.txt) do findstr /m "批处理之家" "%%i"
  3. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
battab + 1 不错啊!

查看全部评分

发表于 2011-7-19 18:07:31 | 显示全部楼层
13# Hello123World

可以用通配
  1. findstr /m /l /c:"批处理之家" *.txt
复制代码
发表于 2011-7-20 02:42:39 | 显示全部楼层
使用通配符受教了,不过/l /c参数没必要吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:54 , Processed in 0.028600 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表