0

我试图从我已经创建的文件中获取一块文本并将该信息存储到一个新文件中。要解析的文本文件 id 设置如下:

主机名:xxxxxx

(大约8行信息)

主机名:xxxxxx

我遇到的最大问题是在文本块之间我专门寻找“管理员”这个词。我能够找到并返回其中包含单词 admin 的行,现在我需要编写一个循环来获取上面和下面的信息,如果在该文本块中找到单词 admin(我打算使用一个空行作为分隔符,这在我的文件中是一致的)。

我写了一些 for 循环,但没有一个给我 id 喜欢的内容。任何帮助,将不胜感激。
谢谢

4

1 回答 1

2

下面的程序做你想做的事:

@echo off
setlocal EnableDelayedExpansion
rem Create the info removing empty lines
(for /F "delims=" %%a in ('schtasks /query /fo list /v') do echo %%a) > schtasks.txt
rem Add an additional "HostName:" line at end as delimiter
echo HostName: >> schtasks.txt
rem Create a vector of number of lines containing "HostName:"
set i=0
for /F "delims=:" %%a in ('findstr /N "HostName:" schtasks.txt') do (
   set /A i+=1
   set header[!i!]=%%a
)
rem Seek for the LINES containing "admin"
for /F "delims=:" %%a in ('findstr /N /I "administrator" schtasks.txt') do (
   rem Seek for the NEXT section that contains "admin" line
   for /L %%i in (1,1,%i%) do if %%a gtr !header[%%i]! set thisSection=%%i
   rem Locate that section
   set /A start=header[!thisSection!], nextSection=thisSection+1
   set /A end=header[!nextSection!]-1
   rem ... and show it
   set line=0
   for /F "delims=" %%a in (schtasks.txt) do (
      set /A line+=1
      if !line! geq !start! if !line! leq !end! echo %%a
   )
   echo ----------------------------------------------
)
del schtasks.txt

PS - 当然,MS-DOS/Windows Batch 是一种编程语言!

于 2012-06-23T01:39:15.043 回答