我想找到这个单词,并在批处理脚本中用我想要的单词替换搜索字符串后面的3个单词

时间:2013-06-16 18:06:04

标签: batch-file

@ECHO OFF
@setlocal enabledelayedexpansion
SET InFile=test.txt
FOR /F "tokens=*" %%A IN ('FINDSTR "wordA" "%InFile%" ^| FINDSTR "wordB"') DO CALL :FindString "%%A"
pause
:FindString
SET String=%~1
SET String=%String:*wordA =%
SET String=%String: wordB=`%
FOR /F "tokens=1 delims=`" %%A IN ('%String%') DO ECHO %%A

在这里,我只编写了一个代码,用我想要的字符替换这个单词 当我运行这些代码时,我收到错误说 。此时出人意料

2 个答案:

答案 0 :(得分:1)

你很亲密。请参阅以下代码中的mods。如果你真的想要wordB之后的第一个单词......这样就可以了。 如果你不需要延迟扩展,请不要启用延迟扩展,因为如果有的话,只会让你感到困惑!在文中。

@echo off
SET InFile=test.txt
FOR /F "tokens=*" %%A IN ('FINDSTR "wordA" "%InFile%" ^| FINDSTR "wordB"') DO CALL :FindString "%%A"
pause
goto :eof

:FindString
SET String=%~1
SET String=%String:*wordA =%
SET String=%String:wordB =%
FOR /F "tokens=1" %%A IN ('echo.%String%') DO ECHO.%%A
:goto :eof

答案 1 :(得分:1)

我不确定,你想要什么,但你可以试试这个:

@echo off &setlocal
SET "InFile=test.txt"
echo(wordA wordB>"%InFile%"
FOR /F "tokens=*" %%A IN ('FINDSTR "wordA" "%InFile%" ^| FINDSTR "wordB"') DO CALL :FindString "%%A"
pause
goto:eof

:FindString
SET "String=%~1"
SET "String=%String:*wordA =%"
SET "String=%String: wordB=`%"
FOR /F "tokens=1 delims=`" %%A IN ("%String%") DO ECHO %%A