2013-08-01 86 views
1

讓我們舉個例子。我有一個文件夾有20個文件。讓我們假設所有文件都超過1 MB ..我的目標是複製第一個500 kb(即佔用第一個500 kb的字符串)並將其寫入另一個文件。然後將其循環並對20個文件中的每一個執行相同操作。文件的寫入必須發生在20個單獨的文件中。我如何從一個文件中提取信息在vbscript

,比如我有

   1.doc1.txt 
       2.doc2.txt 
       3.doc.exe 
       4.doc.jpg 
       so on 

我想

   first 500kb of doc1.txt to be saved in dup1.txt, 
      first 500kb of doc2.txt in dup2.txt and so on. 

是有可能做到這一點使用VBScript?如果是的話如何?看起來真的很複雜,我.. ..請幫助

回答

2

您可以使用此一ADODB.Stream對象:

Set stream = CreateObject("ADODB.Stream") 
stream.Open 
stream.Type = 1 'binary 
stream.LoadFromFile "doc1.txt" 
chunk = stream.Read(512000) 
stream.Close 

stream.Open 
stream.Type = 1 'binary 
stream.Write chunk 
stream.SaveToFile "dup1.txt", 2 
stream.Close 

輸入文件可以拆分爲使用2個Stream對象這樣幾個大塊:

Const chunksize = 512000 

Sub WriteChunk(data, filename) 
    Set oStream = CreateObject("ADODB.Stream") 
    oStream.Open 
    oStream.Type = 1 'binary 
    oStream.Write data 
    oStream.SaveToFile filename, 2 
    oStream.Close 
End Sub 

Set iStream = CreateObject("ADODB.Stream") 

iStream.Open 
iStream.Type = 1 'binary 
iStream.LoadFromFile "doc1.txt" 

WriteChunk iStream.Read(chunksize), "dup.txt" 
WriteChunk iStream.Read(chunksize), "dup1.txt" 
WriteChunk iStream.Read(chunksize), "dup2.txt" 
... 

iStream.Close 
Set iStream = CreateObject("ADODB.Stream") 
Set oStream = CreateObject("ADODB.Stream") 

iStream.Open 
iStream.Type = 1 'binary 
iStream.LoadFromFile "doc1.txt" 

oStream.Open 
oStream.Type = 1 'binary 
oStream.Write iStream.Read(512000) 
oStream.SaveToFile "dup.txt", 2 
oStream.Close 

oStream.Open 
oStream.Type = 1 'binary 
oStream.Write iStream.Read(512000) 
oStream.SaveToFile "dup1.txt", 2 
oStream.Close 

oStream.Open 
oStream.Type = 1 'binary 
oStream.Write iStream.Read(512000) 
oStream.SaveToFile "dup2.txt", 2 
oStream.Close 

... 

iStream.Close 

這可以通過在一個過程或函數包裝重複代碼段被簡化

+0

謝謝你的人!你是一個VBScript的百科全書!我會嘗試這個並回到你身邊。再次感謝! –

+0

你的程序工作!一如既往。現在學會循環,以便相同文件的塊依次存儲在不同的文件中...例如:500kb在dup.txt..nxt 500在dup1中,下一個在dup2中直到文件結尾 –

+0

對不起..didnt知道這個功能..我已經接受了迄今爲止我所接受的所有答案.. :) –

0

使用打開的TextStream.Read方法讀取輸入文件中的塊和寫入打開的TextStream的.Write方法,將其寫入輸出文件。

示例代碼:

>> Dim tsIn : Set tsIn = goFS.OpenTextFile("00.vbs") 
>> Dim tsOut : Set tsOut = goFS.CreateTextFile("00.head") 
>> tsOut.Write tsIn.Read(10) 
>> tsIn.Close 
>> tsOut.Close 
>> WScript.Echo goFS.OpenTextFile("00.head").ReadAll() 
>> 
Option Exp 
+0

謝謝你的幫助:) –

+0

wats goFS?我的意思是哪個對象的實例? –

+0

您已經編寫的程序根據字符數bro來複制字符串。我想要一個根據其大小讀取字符串的程序。但我學到了新東西:)謝謝 –