批处理脚本 - 查找文件中包含特定字符串的单词

时间:2014-03-21 13:25:25

标签: string batch-file

我有一个包含大量文字的文件。 EG

Hello
This is my file
this is the end of the file

我需要一个脚本来搜索文件并将所有单词(只是单词而不是行放入另一个文件)中包含例如字母e 在这种情况下,新文件看起来像

Hello
file
the
end
the
file

它可能还需要搜索另一个例子bh。 (包括句号)所以带有以下

的文件
hello
bh.ah1
my file
the end

将生成一个文件 bh.ah1

希望这是足够的细节

2 个答案:

答案 0 :(得分:0)

@echo off
set "searchfor=bh."

for /f "delims=" %%i in (t.t) do (
  for %%j in (%%i) do (
    echo %%j|find "%searchfor%" >nul && echo %%j
  )
)

为每一行(%% i)做

对于此行中的每个单词(%% j)执行

如果找到searchstring则回显字

编辑你的评论:在处理单词之前用行中的空格替换(

@echo off
setlocal enabledelayedexpansion

set "searchfor=bh."

for /f "delims=" %%i in (t.t) do (
  set t=%%i
  set t=!t:(= !
  for %%j in (!t!) do (
    echo %%j|find "%searchfor%" >nul && echo %%j
  )
)

您可以使用其他行添加更多字符,例如set t=!t:(= !(将(替换为

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "target=%~1"
FOR /f "delims=" %%a IN (q22560073.txt) DO CALL :findem %%a

GOTO :EOF

:findem
SET candidate=%1
IF NOT DEFINED candidate GOTO :EOF 
ECHO %1|FIND /i "%target%" >NUL
IF NOT ERRORLEVEL 1 ECHO(%1
shift
GOTO findem

我使用名为q22560073.txt的文件进行测试。

要查找文本字符串,请使用

thisbatch text

所以

thisbatch e

会找到第一个列表和

thisbatch bh.

第二个。

(我将两个样本测试文件合并为q22560073.txt)

/i命令中的find使测试用例不敏感。

要输出到文件,只需使用

即可
thisbatch text >"filename"

只有当文件名包含空格和其他有问题的字符时才需要“兔子耳朵”,但在任何情况下都不会造成伤害。

这适用于任何字母或数字组合的目标以及句号。它不适用于对cmd具有特殊含义的字符。


@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "target=%~1"
FOR /f "delims=" %%a IN (q22560073.txt) DO (
 SET "line=%%a"
 SET "line=!line:(= !"
 SET "line=!line:)= !"
CALL :findem !line!
)

GOTO :EOF

:findem
SET candidate=%1
IF NOT DEFINED candidate GOTO :EOF 
ECHO %1|FIND /i "%target%" >NUL
IF NOT ERRORLEVEL 1 ECHO(%1
shift
GOTO findem

修订了进一步的信息。