0
@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

在这里,我刚刚编写了一个代码,用我想要的字符替换这个词。当我运行这些代码时,我收到错误消息。这时候出乎意料

4

2 回答 2

1

你很亲密。请参阅下面的代码修改。如果你真的想要 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
于 2013-06-16T19:08:29.130 回答
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
于 2013-06-16T19:08:30.820 回答