1

Тема: VBS Манипуляция строками в текстовом файле

Уважаемые коллеги. При создание текстового файла и записи в него строк методом TextStream.WriteLine в конце файла остаётся - vbcrlf. Требуется удаление последнего vbcrlf. Заранее спасибо за помощь.

2

Re: VBS Манипуляция строками в текстовом файле

Для последней строки используйте не «.WriteLine», а «.Write». Если приведёте код, можно будет показать и альтернативный вариант.

P.S. Удалить уже записанное посредством TextStream невозможно.

3

Re: VBS Манипуляция строками в текстовом файле

К сожалению привести код не смогу по определённым причинам. Но сведу вопрос к более простой форме. Необходимо убрать в произвольном текстовом файле все пустые строки. Я не смог это сделать сам средствами VBS и в сети тоже не обнаружил решения. Поэтому пришла идея использовать командный интерпретатор. Собственно три сточки bat файла решают  проблему.

FOR /F "eol= tokens=*" %%i in (my_file.txt) do @echo %%i >> temp.txt
del everest.ini
rename temp.txt my_file.txt

Но если запустить эти команды из скрипта то не выполняется оператор for:

Set WshShell = WScript.CreateObject("WScript.Shell")
              Set WshExec = WshShell.Exec("cmd.exe /q /k")
    WshExec.StdIn.WriteLine "for /f ""eol= tokens=*"" %%i in (my_file.txt) do @echo %%i >> temp.txt"
        WshExec.StdIn.WriteLine "del everest.ini"
        WshExec.StdIn.WriteLine "rename temp.txt my_file.txt"
        WshExec.StdIn.WriteLine "exit"

Не могу понять в чём ошибка. Буду признателен за помощь.

4

Re: VBS Манипуляция строками в текстовом файле

Ошибка в коде. Вместо

"del everest.ini"

Вот строка

"del my_file.txt"

5

Re: VBS Манипуляция строками в текстовом файле

NAUN пишет:

Необходимо убрать в произвольном текстовом файле все пустые строки

Можно так:


Const strFilePath = "qwe.txt"
Const strNewFilePath = "qweqwe.txt"
Dim fso, objFile, objNewFile, s

Set fso = CreateObject("Scripting.FileSystemObject")
'открываем файл для чтения	
Set objFile = fso.OpenTextFile(strFilePath,1)
'создаем новый файл, если существует - заменим	
Set objNewFile = fso.CreateTextFile(strNewFilePath,True)
		
Do While objFile.AtEndOfStream <> True 'читаем файл построчно
	s = Trim(objFile.ReadLine)
	If  s <> vbNullString Then objNewFile.WriteLine s	
Loop

'закрываем файлы
objFile.Close 
objNewFile.Close 
'удаляем ссылки
Set objFile = Nothing 
Set objNewFile = Nothing 
Set fso = Nothing

и файл qwe.txt следующего содержания:

                    qwe

qweqwe      qweqweqwe


          qweqweqweqwe

превращается в qweqwe.txt со следующим содержанием:

qwe
qweqwe      qweqweqwe
qweqweqweqwe

Далее, в случае необходимости можно удалить источник и переименовать созданный файл.
В общем в Вашем случае курите FileSystemObject.
Подойдет?

6

Re: VBS Манипуляция строками в текстовом файле

dab00, про Trim() речь вроде не шла .

7

Re: VBS Манипуляция строками в текстовом файле

alexii пишет:

dab00, про Trim() речь вроде не шла .

Вроде не шла , просто по-шустрому скопипастил с другого кода, а там был Trim(). Так интереснее .