2012-06-22 76 views
0

我試圖從文件中獲取文本塊我已經創建並將該信息存儲到新文件中。該文本文件ID喜歡解析設置是這樣的:如何從批處理文件中抓取文本塊

主機名:XXXXXX

(8個左右的信息線)

主機名:XXXXXX

我遇到的最大的問題是在文本塊之間我特別尋找「admin」這個詞。我能夠找到並返回包含單詞admin的行,現在我需要編寫一個循環來獲取上面和下面的信息,如果在該塊文本中找到admin這個詞(我將使用空行作爲在我的文件中一致的分隔符)。

我寫了幾個for循環,但他們都沒有給我什麼id像。任何幫助,將不勝感激。
感謝

+0

瞭解您當前正在使用哪種編程語言以及一些示例代碼會很有幫助。 –

+0

「批量」不是一種語言。你想用什麼語言,以及什麼操作系統? [我們不介意這裏的讀者](http://meta.stackexchange.com/a/128551/172661) - 我們只有您提供的信息。此外,如果您發佈了迄今爲止已嘗試過的不起作用的內容,則會很有幫助。 –

+0

我在MSDOS批處理中寫我的程序(我不知道該怎麼解釋它)。目前,我的代碼是 回聲的schtasks:>> RESULTS.TXT 的schtasks /查詢/ FO列表/ V> schtasks.txt FINDSTR /我 「管理員*」 schtasks.txt >> RESULTS.TXT 回聲。 >> results.txt 該代碼將執行我需要創建我的文件的命令,但現在我不知道如何從上述文件中提取信息。再次感謝。 – Jingles177

回答

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批處理是一種編程語言!

+0

這完全是我在找的東西。感謝您花時間爲我寫這篇文章。此外,感謝您的意見,因爲此代碼非常容易追蹤和學習。 – Jingles177

+0

如果您不介意,還有一個問題。我試圖編輯代碼有點沒有運氣,因爲它會覆蓋任何以前的單詞管理員實例(我的意思是覆蓋%% a,因此只顯示該單詞的最後一個實例)。它可能是一個簡單的修復,但我花了很多時間在這個,所以任何幫助表示讚賞。 – Jingles177

+0

是的。批處理文件僅根據您的規範爲「admin」字的一個實例開發。雖然修改不是很困難,但也不是那麼簡單;我需要一些時間來做到這一點......提示:「設置管理員= %%一個命令」必須包含它下面的所有行,以'set admin = %% a'開始' – Aacini

相關問題