iT邦幫忙

0

使用vbscript 列印出文字檔中,符合條件的特定幾行

  • 分享至 

  • xImage

各位大大好
假設小弟現在有以下文件:AAA.txt

start JOB1 (JOB1.job)
doing
..........
warning
done
start JOB2 (JOB2.job)
doing
..........
warning
done
start JOB1 (JOB1.job)
doing
..........
ok
done

而小弟想要藉由AAA.txt 檔案,寫一支vbscript來產出一個BBB.txt 內容如下:

start JOB1 (JOB1.job)
doing
..........
warning
done
start JOB1 (JOB1.job)
doing
..........
ok
done

也就是我只想找出JOB1的執行情形
小弟想了一個條件:

當該行內容出現"JOB1",則開始複製行內容至BBB.txt(第一行出現JOB1,OK 開始複製)
之後的每一行內容都複製到BBB.txt
[第二行 doing-->複製 第三行......-->複製
第四行 warning-->複製 第五行done-->複製]

除非該行內容有"("字元,才停止複製
[第六行 start JOB2 (JOB2.job) 裡面有"("字元 -->停止複製]

然後繼續往下找是否出現字串"JOB1"
有的話重複上述動作

請問這樣該怎麼做呢@_@
有沒有大大可以幫幫我或指導我的 感激不盡!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

18
海綿寶寶
iT邦大神 1 級 ‧ 2010-07-13 14:25:58
最佳解答

參考看看
有問題再說

<pre class="c" name="code">
Dim WshShell, oExec
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objInputFile = objFSO.OpenTextFile("vbin.txt",1)
Set objOutputFile = objFSO.OpenTextFile("vbout.txt",8,True)

bWriteFlag = False

Do until objInputFile.AtEndofStream
	strLine = objInputFile.ReadLine
	If InStr(strLine, "start") > 0 then
		If InStr(strLine, "JOB1.job") > 0 then
			bWriteFlag = True
		else
			bWriteFlag = False
		end if
	end If
	
	If (bWriteFlag = True) Then
		objOutputFile.WriteLine(strLine)
	End If
Loop

objInputFile.Close
objOutputFile.Close

忘了改檔名:
那個 vbin.txt 就是你的 AAA.txt
vbout.txt 就是你的 BBB.txt

jatdr iT邦新手 5 級 ‧ 2010-07-13 16:07:40 檢舉

謝謝您~~
小弟若還有其他疑問 會繼續上來發問
不好意思這種簡單的問題還要大家費心

相當感謝!!

我要發表回答

立即登入回答