如何从文本文件中查找单词并使用批处理文件复制粘贴该行上的下一个单词

时间:2017-11-10 09:25:32

标签: batch-file

我想从文本文件中找到一个单词,然后使用批处理文件复制粘贴该行的下一个单词。

对于Ex:我的名字是xyz。我喜欢科学。我喜欢打排球。

这是文本文件,我想找到“播放”这个词,然后显示下一个单词“排球”。

如何为它编写Windows批处理文件?

2 个答案:

答案 0 :(得分:1)

您的问题的字面答案将是"使用记事本和键盘"

答案,你想读:
使用子字符串替换从头开始删除所有内容,直到(包括)搜索词。 (见set /?
使用for循环从字符串的其余部分获取第一个单词。 (见for /?

@echo off
echo my name is xyz. i like science. i like to play volleyball and drink whiskey. >abc.txt
<abc.txt set /p "text="
for /f "delims=.,;! " %%a in ('echo %text:* play =%') do set result=%%a
echo the found word is: %result%
REM to write the found word into a new file, use redirection:
echo %result% >xyz.txt

修改以匹配what needs to do with multiple lines ?

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%z in (abc.txt) do (
  set "text=%%z"
  for /f "delims=.,;! " %%a in ('echo "!text:* play =!"') do set "result=%%~a"
  echo !result! >>xyz.txt
)

需要进行一些小改动; delayed expansion,另一个for /f loop缠绕并附加到>>的文件。

注意:请不要将此作为一个无休止的变化问题。当您遇到其他问题时,请ask a new question

答案 1 :(得分:1)

这是一种更简单的方法:

@echo off
for /F "tokens=3" %%a in ('"setx /F file.txt dummyVar /R 0,1 play"') do set "var=%%a" & goto continue
:continue
set "var=%var:~0,-1%"
echo %var%

/R oL,oT命令的setx开关允许在文件中获取相对于其后给出的另一个标记/单词的单词。在上面的代码中:/R 0,1 play部分表示:搜索&#34;播放&#34;单词并返回放在同一行(0,)中的单词和单词后面的单词(1)。这种方法允许以非常简单的方式在另一行的上方或下方的行中获取单词,或者从另一个单词的左侧或右侧获取单词,或者两者兼而有之。

this post的进一步详情。