天天看點

VBS腳本判斷及擷取兩個檔案之間的不同内容

由于公司目前的資料比較亂,近期做系統優化,A系統中有1000個使用者,B系統有1300個使用者,但是A系統中的使用者是正确的,B系統中的資料不正确,也有可能是使用者資料沒有及時做删除,是以想通過vbs腳本進行判斷及删除,是以我們需要将A系統中的使用者導出來,然後以A系統的資料為準,然後同時将B系統的使用者資訊也導出來,通過vbs比較,将不同的資料寫入到新生成的檔案中做處理,具體見下:

以下是一個例子:

A系統中導出的檔案:

<a href="http://s3.51cto.com/wyfs02/M00/8F/4E/wKiom1jaV6LSF3o7AABmLYfdSc0704.png" target="_blank"></a>

B系統導出的檔案:

<a href="http://s3.51cto.com/wyfs02/M01/8F/4E/wKiom1jaV6ODDQoZAABMQUgI3-0916.png" target="_blank"></a>

執行的效果應該是在新生成的檔案中,将B系統檔案中的user06、user07寫入到新的檔案中就正常了;

因為:A系統的資料是準确的,是以通過比對後,将差異資料寫入到新的資料檔案中;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>Dim Txt1,Txt2,Txt3</code>

<code>msgbox </code><code>"請選擇源檔案-01"</code>

<code>Txt1 = CreateObject(</code><code>"WScript.Shell"</code><code>).Exec(</code><code>"mshta vbscript:"</code><code>"&lt;input type=file id=f&gt;&lt;script&gt;f.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value)[close()];&lt;/script&gt;"</code><code>""</code><code>).StdOut.ReadAll</code>

<code>msgbox </code><code>"請選擇源檔案-02"</code>

<code>Txt2 = CreateObject(</code><code>"WScript.Shell"</code><code>).Exec(</code><code>"mshta vbscript:"</code><code>"&lt;input type=file id=f&gt;&lt;script&gt;f.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value)[close()];&lt;/script&gt;"</code><code>""</code><code>).StdOut.ReadAll</code>

<code>msgbox </code><code>"請選擇儲存路勁"</code>

<code>Txt3 = BrowseForFolder(</code><code>"txt3 fold: "</code><code>) &amp; </code><code>"\zhixing.txt"</code>

<code>Set dic = CreateObject(</code><code>"scripting.dictionary"</code><code>)</code>

<code>Set fso = CreateObject(</code><code>"scripting.filesystemobject"</code><code>)</code>

<code>Set of1 = fso.OpenTextFile(Txt1)</code>

<code>Do While of1.AtEndOfLine &lt;&gt; True</code>

<code>    </code><code>dic.Add of1.ReadLine,1</code>

<code>Loop</code>

<code>Set of2 = fso.OpenTextFile(Txt2)</code>

<code>Set of3 = fso.CreateTextFile(Txt3)</code>

<code>Do While of2.AtEndOfLine &lt;&gt; True</code>

<code>    </code><code>line = of2.ReadLine</code>

<code>    </code><code>If Not dic.Exists(line) Then</code>

<code>        </code><code>of3.Writeline line</code>

<code>    </code><code>End If</code>

<code>msgbox </code><code>"ok"</code>

<code>Function BrowseForFolder(ByVal strTips)</code>

<code>  </code><code>Dim objFolder</code>

<code>  </code><code>Set objFolder = CreateObject(</code><code>"Shell.Application"</code><code>).BrowseForFolder (&amp;H0, strTips, &amp;H0010 + &amp;H0001)</code>

<code>  </code><code>If (Not objFolder Is Nothing) Then BrowseForFolder = objFolder.Self.Path  'objFolder.Items().Item().Path</code>

<code>End Function</code>

<a href="http://s3.51cto.com/wyfs02/M01/8F/4C/wKioL1jaV6bBVoSlAAHCSe2fcz4866.png" target="_blank"></a>

如果資料多的話,我們可以按照一下腳本試試

<code>Set of1 = fso.OpenTextFile(Txt1,1)</code>

<code>Do While Not of1.atendofstream  </code>

<code>line = of1.ReadLine</code>

<code>If Not dic.Exists(line) Then</code>

<code>dic.Add line,1</code>

<code>End </code><code>if</code>

<code>Set of2 = fso.OpenTextFile(Txt2,1)</code>

<code>Do While Not of2.atendofstream  </code>

<code>lined = of2.ReadLine</code>

<code>If Not dic.Exists(lined) Then</code>

<code>of3.Writeline lined</code>

<code>End If</code>

開始執行,需要選擇源檔案-01

<a href="http://s3.51cto.com/wyfs02/M02/8F/4C/wKioL1jaV6vS7htPAAe9CuWyuBY960.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/8F/4C/wKioL1jaV7HCh4w6AAbLU4EEFtY523.png" target="_blank"></a>

然後選擇源檔案-02

<a href="http://s3.51cto.com/wyfs02/M00/8F/4C/wKioL1jaV7bB66x1AAX9Ug5jh84645.png" target="_blank"></a>

選擇源檔案-02之後,提示需要選擇執行後的差異檔案的路勁

<a href="http://s3.51cto.com/wyfs02/M02/8F/4C/wKioL1jaV9SyYnWlAAaZIuvw7II970.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/8F/4E/wKiom1jaV9qAd-pkAAX7owpDXTs437.png" target="_blank"></a>

執行成功

<a href="http://s3.51cto.com/wyfs02/M00/8F/4C/wKioL1jaV97RP0WSAAPYPyVGdO8714.png" target="_blank"></a>

然後我們檢視執行後的檔案

<a href="http://s3.51cto.com/wyfs02/M01/8F/4E/wKiom1jaV_XRDnufAAUHGsY0eoo713.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/8F/4C/wKioL1jaWA2hDoq7AABN98dH0wI528.png" target="_blank"></a>

本文轉自 高文龍 51CTO部落格,原文連結:http://blog.51cto.com/gaowenlong/1911226,如需轉載請自行聯系原作者