2013-08-19 2 views
0

Я использовал следующий код, чтобы разделить мой текстовый файл на два файла. Мой исходный файл состоит только из 20 строк, которые я пытаюсь разделить на 2 файла. Даже когда скрипт запускается, и я получаю сообщение в конце, говоря, что процесс завершен. Я не вижу никаких разделенных файлов на выходном месте. Пожалуйста, скажите мне, в чем проблема в коде, я новичок в vbscript, поэтому, пожалуйста, помогите мне. заранее спасибо :)Не получать выходные данные для разделения текстовых файлов в vbscript

Dim Counter 
Const InputFile = "C:\Cs.txt" 
Const OutputFile = "C:\Users\rmehta\Desktop" 
Const RecordSize = 10 
Const ForReading = 1 
Const ForWriting = 2 
Const ForAppending = 8 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile (InputFile, ForReading) 
Counter = 0 
FileCounter = 0 
Set objOutTextFile = Nothing 

Do Until objTextFile.AtEndOfStream 
if Counter = 0 Or Counter = RecordSize Then 
    Counter = 0 
    FileCounter = FileCounter + 1 
    if Not objOutTextFile is Nothing then objOutTextFile.Close 
    Set objOutTextFile = objFSO.OpenTextFile(OutputFile & "_" & FileCounter & ".txt", ForWriting, True) 
end if 
strNextLine = objTextFile.Readline 
objOutTextFile.WriteLine(strNextLine) 
Counter = Counter + 1 
Loop 
objTextFile.Close 
objOutTextFile.Close 
Msgbox "Split process complete" 

ответ

1

Если вы не зададите все паразитные жир (TextStream имеет счетчик строк и первый выходной файл может быть открыт до цикла), вы получите

Option Explicit 
    Const cnSize = 10 
    Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject") 
    Dim sDir : sDir  = "..\testdata\18308970" 
    Dim tsIn : Set tsIn = oFS.OpenTextFile(oFS.BuildPath(sDir, "all.txt")) 
    Dim nFCnt : nFCnt  = 0 
    Dim tsOut : Set tsOut = oFS.CreateTextFile(oFS.BuildPath(sDir, nFCnt & "-part.txt")) 
    Do Until tsIn.AtEndOfStream 
    If 0 = tsIn.Line Mod cnSize Then 
     tsOut.Close 
     nFCnt  = nFCnt + 1 
     Set tsOut = oFS.CreateTextFile(oFS.BuildPath(sDir, nFCnt & "-part.txt")) 
    End If 
    tsOut.WriteLine tsIn.ReadLine() 
    Loop 
    tsIn.Close 
    tsOut.Close 

Что это «работает» - если у вас есть папка, входной файл и разрешения - очевидно. В вашем коде проблема

>> Const OutputFile = "C:\Users\rmehta\Desktop" 
>> FileCounter = 0 
>> WScript.Echo OutputFile & "_" & FileCounter & ".txt" 
>> 
C:\Users\rmehta\Desktop_0.txt 

is is deep hidden.

+0

Работал с небольшой заменой cnSize = 11 ... Спасибо большое! Очень полезно :) – M3HTA

+0

Пожалуйста, помогите мне с этим тоже: http://stackoverflow.com/q/18722318/2636830 – M3HTA

+0

Заранее спасибо :) – M3HTA