批量搜索和编辑文本文件
Search and Edit Text Files w/ Batch
我对批处理脚本相当陌生,目前正在尝试使用脚本简化我的工作(这会让我的老板满意)。有没有办法让批处理文件在文本文件中搜索特定的给定输入,然后 echo
进入文本文件?
例如,文本文件如下所示:
4/11/2016
01530594
Time In: 1:30
01565832
Time In: 2:32
在本例中,给定的字符串是 01530594
,我需要在文本文件中搜索它,并记录超时时间,使其看起来像这样:
4/11/2016
01530594
Time In: 1:30
Time Out: 3:21
01565832
Time In:
如果需要其他东西让它变得更容易(比如,从一开始就已经 Time Out:
,没有时间),那是可以接受的。
我知道search/replace/edit批处理文件的东西很乏味,这可能吗?
set "timevalue=3:21"
(
for /f "delims=" %%i in (infile.txt) do (
echo %%i
echo %%i|find "Time In:" >nul && echo Time Out: %timevalue%
)
)>outfile.txt
for
循环逐行读取文件。第一个 echo
将行写入输出文件。
第二行echo
有点复杂:
echo %%i|find "Time In:"
看起来,如果该行包含字符串 "Time In:"。 >nul
将其输出写入 nirvana(我们不需要它,我们只想知道它是否存在)。
&&
表示“执行下一个命令,如果前一个命令成功(即 find
)。如果成功,则写一个额外的行 Time Out: %timevalue%
将整个 for
循环放入一个块中(在 (
和 )
之间并将其输出重定向到文件
我对批处理脚本相当陌生,目前正在尝试使用脚本简化我的工作(这会让我的老板满意)。有没有办法让批处理文件在文本文件中搜索特定的给定输入,然后 echo
进入文本文件?
例如,文本文件如下所示:
4/11/2016
01530594
Time In: 1:30
01565832
Time In: 2:32
在本例中,给定的字符串是 01530594
,我需要在文本文件中搜索它,并记录超时时间,使其看起来像这样:
4/11/2016
01530594
Time In: 1:30
Time Out: 3:21
01565832
Time In:
如果需要其他东西让它变得更容易(比如,从一开始就已经 Time Out:
,没有时间),那是可以接受的。
我知道search/replace/edit批处理文件的东西很乏味,这可能吗?
set "timevalue=3:21"
(
for /f "delims=" %%i in (infile.txt) do (
echo %%i
echo %%i|find "Time In:" >nul && echo Time Out: %timevalue%
)
)>outfile.txt
for
循环逐行读取文件。第一个 echo
将行写入输出文件。
第二行echo
有点复杂:
echo %%i|find "Time In:"
看起来,如果该行包含字符串 "Time In:"。 >nul
将其输出写入 nirvana(我们不需要它,我们只想知道它是否存在)。
&&
表示“执行下一个命令,如果前一个命令成功(即 find
)。如果成功,则写一个额外的行 Time Out: %timevalue%
将整个 for
循环放入一个块中(在 (
和 )
之间并将其输出重定向到文件