2013-08-01 6 views
1

을 예로 들어 보겠습니다. 20 개의 파일이있는 폴더가 있습니다. 모든 파일이 1 메가 바이트 이상 있다고 가정 할 수 있습니다. 제 목표는 처음 500kb (즉, 처음 500kb를 차지하는 문자열)를 복사하여 다른 파일에 쓰는 것입니다. 그것을 반복하고 20 개의 파일 각각에 대해 동일한 작업을 수행하십시오. 파일 작성은 20 개의 개별 파일에서 이루어져야합니다. 예를 들어vbscript의 파일에서 정보를 추출하는 방법

내가

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

내가 VBScript를 사용하여이 작업을 수행 할 수

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

이 가능합니다 원하는

있나요? 그렇다면 어떻게? 나에게 정말 복잡한 보이는 ... .. 당신이에 대한 ADODB.Stream 개체를 사용할 수

답변

2

도와주세요 :

:

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 객체를 사용하여 여러 개의 청크로 분할 할 수 있습니다

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

프로그램이 작동합니다! 언제나처럼. 동일한 파일의 덩어리가 차례로 다른 파일에 차례로 저장되도록 루프를 배우고 싶습니다 ... 예 : dup.txt..nxt의 500kb dup1의 500 개, dup2의 다음 파일의 끝까지 –

+0

죄송합니다 ..didnt는이 특징을 안다. .. 나는 지금까지 나의 질문에 받아 들였던 모든 대답을 받아 들였다. :) –

0

.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

작성한 프로그램은 문자 수를 기준으로 문자열을 복사합니다. 크기에 따라 문자열을 읽는 프로그램이 필요했습니다. 하지만 뭔가 새로운 것을 배웠습니다 :) 고마워요. –

관련 문제