我需要逐行浏览a.txt
个文件,然后从中提取并复制zzz
和yyy
字样,将它们存储在另一个b.txt
文件中,而不是循环通过这些单词并创建一个如下所示的命令行:
blabla XXX
虽然XXX是在我们之前创建的b.txt文件中逐一获取的,然后才得到" zzz"和" yyy"在它。
示例:
档案a.txt
jsdfjdsfnsdj
yyy
sdfdsfsd
zzz
b.txt文件将是:
yyy
zzz
并且创建的命令将是:
blabla yyy
blabla zzz
答案 0 :(得分:0)
使用 For / F 作为读取行,并使用 findstr
检查行for /F "delims=" %%a in (a.txt) do ( call :checkline %%a )
goto :eof
:checkline
@echo %1 |findstr /g:b.txt
if %ERRORLEVEL%==0 echo blablabla %1 >>c.txt
ENDLOCAL
:eof
答案 1 :(得分:0)
@echo off
if exist b.txt del b.txt
for /f "delims=" %%a in (a.txt) do (
if "%%a"=="yyy" echo blabla %%a >> b.txt
if "%%a"=="zzz" echo blabla %%a >> b.txt
)
我认为你也可以让@ Eric的方法工作。如果您实际将搜索表达式放在模式文件中,findstr
会更好。我认为他的方法应该修改以匹配整条线。
echo ^^yyy^$> patterns.txt
echo ^^zzz^$>> patterns.txt
for /F "delims=" %%a in (a.txt) do (call :checkline %%a)
del patterns.txt
goto :eof
:checkline
@echo %1 | findstr /g:patterns.txt
if %ERRORLEVEL%==0 echo blablabla %1 >>c.txt
goto :eof
我认为你可以使用这一行而不需要额外的模式文件麻烦。不幸的是findstr
并不真正支持正则表达式的替换,但我认为这样做没问题。
@echo %1 | findstr "^yyy$ ^zzz$"