0

ファイルのチャンクのハッシュを見つけて、そのハッシュを別のファイルに保存したいと考えています。チャンクを別のファイルに保存せずに直接実行したい..これが私のプログラムです。

 Const chunksize = 1024000000
 dim istream,ostream
  Sub WriteChunk(data)
   Set oStream = CreateObject("ADODB.Stream")
   oStream.Open
   oStream.Type = 1 
   oStream.Write data

   Dim WshShell, oExec, input,objfile2,str1
   Set WshShell = CreateObject("WScript.Shell")
   Set oExec    = WshShell.exec("C:\Users\Administrator\desktop\experimenting\md5.exe_
                             -odup5.txt """ & ostream.write & """")

   input = ""
      Do While oexec.status=0
     WScript.Sleep 50
     Loop
     oStream.Close
   End Sub

    Set iStream = CreateObject("ADODB.Stream")
     iStream.Open
   iStream.Type = 1  'binary
    Const FOR_READING = 1

     strFolder = "C:\test" 

     Set objFSO = CreateObject("Scripting.FileSystemObject")

     Set objFolder = objFSO.GetFolder(strFolder)

     Set colFiles = objFolder.Files

     For Each objFile In colFiles
      iStream.LoadFromFile objfile.path
        Do Until istream.EOS
      WriteChunk iStream.Read(chunksize)


      loop 


     Next

     ShowSubFolders(objFolder)


   Sub ShowSubFolders(objFolder)

   Set colFolders = objFolder.SubFolders

       For Each objSubFolder In colFolders

      set colFiles = objSubFolder.Files

      For Each objFile2 In colFiles


      iStream.LoadFromFile objfile2.path
      Do Until istream.EOS
      WriteChunk iStream.Read(chunksize)



        loop 
        Next

        ShowSubFolders(objSubFolder)

       Next

     End Sub


       iStream.Close

ostream.write は引数として使用できません。しかし、私はその代わりに何が使用できるかについて理解していません..助けてください

4

1 に答える 1

0
Set oExec = WshShell.exec("C:\Users\Administrator\desktop\experimenting\md5.exe_
                     -odup5.txt """ & ostream.write & """")

文字列内で改行を使用できないため、上記は失敗します。また、ADODB Stream オブジェクトに何かostream.write書き込もうとしていることを意味します。あなたが実際にやりたいこと (私があなたの質問を正しく理解し、あなたがthisを使用していると仮定すると) は次のようなものです: md5.exe

WshShell.Run "C:\...\md5.exe -ochunk_md5.txt -d""" & data & """"

データのすべてのチャンクの結果を同じファイルに書き込むには、次のようにします。

WshShell.Run "%COMSPEC% /c md5.exe -o- -d""" & data & """>chunk_md5.txt", 1, True

またはこのように:

Set md5 = WshShell.Exec("md5.exe -o- -d""" & data & """")
Do While md5.Status = 0
  WScript.Sleep 100
Loop
objFSO.OpenTextFile("chunk_md5.txt", 8, True).Write md5.StdOut.ReadAll

または、この VBScriptを使用してハッシュを計算し、結果をファイルに書き込むこともできます。

于 2013-08-06T15:10:45.173 に答える