1

Тема: VBS: Выборочное считывание текстового файла

Уважаемые коллеги.  Помогите написать код , который считывает  выборочно строки текстового файла. Количество строк в файле заранее неизвестно.Необходимо чтобы скрипт последовательно считывал строки пропуская в начале каждой новой строки 3 символа и допустим записывал результат  в другой текстовый файл. Заранее благодарю за помощь.

2

Re: VBS: Выборочное считывание текстового файла

NAUN пишет:

который считывает  выборочно строки

NAUN пишет:

последовательно считывал строки

NAUN, как-то непоследовательно .

Предположим, что верно второе утверждение:

Option Explicit

' IOMode Enum
Const ForReading   = 1
Const ForWriting   = 2
Const ForAppending = 8

' Format Enum
Const TristateUseDefault = -2
Const TristateTrue       = -1
Const TristateFalse      =  0


Dim strFileIn
Dim strFileOut

Dim objFSO
Dim objTSIn
Dim objTSOut


With WScript.Arguments
    If .Count = 2 Then
        strFileIn  = .Item(0)
        strFileOut = .Item(1)
    Else
        WScript.Echo "Usage: " & WScript.ScriptName & " <File to input> <File to output>"
        WScript.Quit 1
    End If
End With

With WScript.CreateObject("Scripting.FileSystemObject")
    strFileIn  = .GetAbsolutePathName(strFileIn)
    strFileOut = .GetAbsolutePathName(strFileOut)
    
    If .FileExists(strFileIn) Then
        Set objTSIn  = .OpenTextFile(strFileIn,  ForReading, False, TristateUseDefault)
        Set objTSOut = .OpenTextFile(strFileOut, ForWriting, True,  TristateUseDefault)
        
        Do Until objTSIn.AtEndOfStream
            objTSOut.WriteLine Mid(objTSIn.ReadLine(), 4)
        Loop
        
        objTSOut.Close
        objTSIn.Close
        
        Set objTSOut = Nothing
        Set objTSIn  = Nothing
    Else
        WScript.Echo "Can't find input file [" & strFileIn & "]"
    End If
End With

WScript.Quit 0

3

Re: VBS: Выборочное считывание текстового файла

Огромное списибо....всё подошло

4

Re: VBS: Выборочное считывание текстового файла

а как например сделать, чтоб скрипт не считывал из файлов строки, начинающиеся на #, ! и | ?

5

Re: VBS: Выборочное считывание текстового файла

president100 пишет:

а как например сделать, чтоб скрипт не считывал из файлов строки, начинающиеся на #, ! и | ?

Никак. Чтобы понять, что строка начинается с искомых символов, надо её (строку) считать. А далее действовать по усмотрению: если строка начинается с символа(ов), то ...

( 2 * b ) || ! ( 2 * b )

6 (изменено: JSmаn, 2011-06-11 20:36:50)

Re: VBS: Выборочное считывание текстового файла

ну вот у меня есть код, который при заданном параметре, пропускает строки с решеткой

set args = wscript.arguments
set fso = wscript.createobject("scripting.filesystemobject")
set shell = wscript.createobject("wscript.shell")

dir = "h:\smth" ' нужно указывать существующую папку

if args.count > 0 then
  if fso.folderExists(args(0)) then
    dir = args(0)
  end if
end if

if args.count > 1 then
  sec = 1
else
  sec = 0
end if

shell.currentDirectory = dir

if fso.fileExists("out.txt") then
  fso.deleteFile("out.txt")
end if

set stream = fso.opentextfile("out", 2, true)

for each file in fso.getFolder(shell.currentDirectory).files
  if len(file.name) > 3 then
    if ucase(right(file.name, 3)) = "TXT" then ' будем читать только файлы с расширением.txt
      set stream1 = fso.openTextFile(file.name, 1)
      do
        str = stream1.readline
        if (sec = 1) and (len(str) > 0) then
          if left(str, 1) <> "#" then          
            stream.writeline str
          end if
        else
          stream.writeline str
        end if
      loop until stream1.atEndOfStream
      stream1.close
    end if
  end if
next

stream.close

set file = fso.getFile("out")
file.name = "out.txt"

и в нем мне нужно еще сделать, чтоб он пропускал строки с ! и |

7 (изменено: Alexey, 2011-06-11 18:31:47)

Re: VBS: Выборочное считывание текстового файла

president100 пишет:

ну вот у меня есть код, который при заданном параметре, пропускает строки с решеткой



и в нем мне нужно еще сделать, чтоб он пропускал строки с ! и |

Почему бы не завернуть его в тег code?


set args = wscript.arguments
set fso = wscript.createobject("scripting.filesystemobject")
set shell = wscript.createobject("wscript.shell")

dir = "h:\smth" ' нужно указывать существующую папку

if args.count > 0 then
  if fso.folderExists(args(0)) then
    dir = args(0)
  end if
end if

if args.count > 1 then
  sec = 1
else
  sec = 0
end if

shell.currentDirectory = dir

if fso.fileExists("out.txt") then
  fso.deleteFile("out.txt")
end if

set stream = fso.opentextfile("out", 2, true)

for each file in fso.getFolder(shell.currentDirectory).files
  if len(file.name) > 3 then
    if ucase(right(file.name, 3)) = "TXT" then ' будем читать только файлы с расширением.txt
      set stream1 = fso.openTextFile(file.name, 1)
      do
        str = stream1.readline
        if (sec = 1) and (len(str) > 0) then
          if left(str, 1) <> "#" then          
            stream.writeline str
          end if
        else
          stream.writeline str
        end if
      loop until stream1.atEndOfStream
      stream1.close
    end if
  end if
next

stream.close

set file = fso.getFile("out")
file.name = "out.txt"

8

Re: VBS: Выборочное считывание текстового файла

ну уже с предыдущим и сам разобрался, но теперь надо сделать еще так, чтобы показывалось количество строк без этих символов