Тема: VBS Манипуляция строками в текстовом файле
Уважаемые коллеги. При создание текстового файла и записи в него строк методом TextStream.WriteLine в конце файла остаётся - vbcrlf. Требуется удаление последнего vbcrlf. Заранее спасибо за помощь.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS Манипуляция строками в текстовом файле
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Уважаемые коллеги. При создание текстового файла и записи в него строк методом TextStream.WriteLine в конце файла остаётся - vbcrlf. Требуется удаление последнего vbcrlf. Заранее спасибо за помощь.
Для последней строки используйте не «.WriteLine», а «.Write». Если приведёте код, можно будет показать и альтернативный вариант.
P.S. Удалить уже записанное посредством TextStream невозможно.
К сожалению привести код не смогу по определённым причинам. Но сведу вопрос к более простой форме. Необходимо убрать в произвольном текстовом файле все пустые строки. Я не смог это сделать сам средствами 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"Не могу понять в чём ошибка. Буду признателен за помощь.
Ошибка в коде. Вместо
"del everest.ini"Вот строка
"del my_file.txt"Необходимо убрать в произвольном текстовом файле все пустые строки
Можно так:
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.
Подойдет?
dab00, про Trim() речь вроде не шла
.
dab00, про Trim() речь вроде не шла
.
Вроде не шла
, просто по-шустрому скопипастил с другого кода, а там был Trim(). Так интереснее
.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться