Я новичок и искал способ в скрипте vb сделать следующее: У меня есть несколько текстов файлы в определенной папке (C: \ data), я хочу прокрутить все текстовые файлы, удалить первую и последнюю строку каждого текстового файла, а затем объединить/объединить все файлы в один текстовый файл. Ваша помощь очень ценится. Заранее спасибо.VBscript: Прокрутите все текстовые файлы в папке, удалите первую и последнюю строку каждого файла и объединитесь в один файл.
Вот что я написал до сих пор после нескольких часов чтения/поиска в Интернете (но это заканчивается бесконечный цикл):
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set folder = objFSO.GetFolder("C:\data\")
Set outFile = objFSO.CreateTextFile("C:\data\out\testout.txt")
for each file in folder.Files
if lcase(objFSO.getExtensionName(file.path))="txt" then
Set testfile = objFSO.OpenTextFile(file.path, ForReading)
Do Until testfile.AtEndOfStream
If testfile.Line <= 1 Then
testfile.SkipLine
Else
if Not IsEmpty(line) Then outFile.WriteLine(line)
line = testfile.ReadLine
End If
Loop
testfile.Close
End If
next
outFile.Close
Текстовый поток ** имеет ** счетчик строк (.Line), поэтому linecount - это пятое колесо; первая строка должна быть пропущена ** перед ** петлей; та же стратегия, что и не писать последнюю строку. –
'if Not Trim (line) =" "Then outFile.WriteLine (строка)' по-прежнему является if (и trim()) ** в цикле, которого следует избегать, тем более, что он удаляет пустые строки между первый и последний (не в спецификациях). BTW: использование tspe's IsEmpty() полностью корректно. –
@ Ekkehard.Horner Ad 'IsEmpty()': правильный _as такой_, но для первого файла только в цикле 'for each'.Начиная второй файл приводит к 'false', поэтому последняя строка предыдущего файла будет записана для вывода. Ad_empty lines_: «решено» давно с _unlike string_ (cf. edit2), но теперь я вижу лучшее решение: 'set line = Nothing' вместо' line = unlikestring' и test 'if Not IsObject (line) Then' вместо из 'if Not line = unlikestring then' – JosefZ