我有一个包含大量文字的文件。 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
希望这是足够的细节
答案 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
修订了进一步的信息。