1

例を挙げましょう。私は20個のファイルを持つフォルダを持っています。すべてのファイルが 1 MB を超えると仮定します。私の目的は、最初の 500 kb (つまり、最初の 500 kb を占める文字列) をコピーして、別のファイルに書き込むことです。それをループして、20 個のファイルのそれぞれに対して同じことを行います。ファイルの書き込みは、20 個の個別のファイルで行う必要があります。

たとえば、私は持っています

               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を使用してこれを行うことは可能ですか? はいの場合、どのように??? 私には本当に複雑に見えます.. .. 助けてください

4

2 に答える 2

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

Stream入力ファイルは、次のように 2 つのオブジェクトを使用して複数のチャンクに分割できます。

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

これは、プロシージャまたは関数で繰り返しコード セグメントをラップすることで簡略化できます。

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
于 2013-08-01T10:59:08.177 に答える