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

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

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

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

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

以下是代码,没有考虑特殊字符,不知有没有考虑周全?

  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 编辑 ]
1

评分人数

    • wxcute: 不错,请将自己构造的文本和字串列出来。PB + 5

TOP

  1. @echo off
  2. for /r %%a in (*.txt) do findstr /r "\<批处理之家\>" "%%a" >nul && echo %%~nxa
  3. pause
复制代码
1

评分人数

TOP

  1. @echo off
  2. set /p a=请输入查找的关键字:
  3. for /F "tokens=1 delims=:" %%i in ('findstr /C:%a% *.txt ') do echo  %%i
复制代码
1

评分人数

TOP

a.txt:

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

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

TOP

一条命令就可以解决:
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 编辑 ]

TOP

答:
是这样么...
  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;

TOP

  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
复制代码
初来乍到,请多指教。

TOP

  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
复制代码

TOP

  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 编辑 ]
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

TOP

  1. @echo off
  2. findstr "批处理之家" *.txt
  3. pause
复制代码
我是一个新手.看到此签名的请发点教程我!!谢谢!!

TOP

3# 风行者

请教楼上:for /r %%a in (*.txt) do findstr /r "\<批处理之家\>" "%%a" >nul && echo %%~nxa
这句中"%%a" >nul 的做用与 echo %%~nxa 中的~nx又是什么意思
没看懂,请教下
菜鸟一个,潜心学习
总有学会的一天

TOP

本帖最后由 Hello123World 于 2011-7-19 16:52 编辑

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

评分人数

TOP

13# Hello123World

可以用通配
  1. findstr /m /l /c:"批处理之家" *.txt
复制代码

TOP

使用通配符受教了,不过/l /c参数没必要吧。

TOP

返回列表