CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Ответить
Аватара пользователя
Alexander_88

CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Alexander_88 »

здравствуйте, есть код, он заменяет текст с одного на другой





Код:

Код: Выделить всё

@echo off
set "word_or_frase=text1"
set "replacement=text2"
for %%i in (
"C:\work\fileslink.txt"
"C:\work2\fileslink.txt"
"C:\work3\fileslink.txt"
 ) do (
 echo WScript.Echo^(Replace^(WScript.CreateObject^("Scripting.FileSystemObject"^).OpenTextFile^(%%i^).ReadAll^(^),"%word_or_frase%","%replacement%"^)^)>.vbs
 cscript //nologo .vbs| clip
 mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(ClipboardData.GetData("text"))&Close()"| more>%%i
 )
del .vbs

но к сожалению, добавляет пустые строки, можно ли удалить все пустые строки из нескольких заданных тхт файлов, а последнюю пустую строку оставить?
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Georgio »

Alexander_88, замените в коде строку

Код:

Код: Выделить всё

mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(ClipboardData.GetData("text"))&Close()"| more>%%i

на строку

Код:

Код: Выделить всё

mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(ClipboardData.GetData("text"))&Close()">%%i

.
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Alexander_88 »

заменил, но в конце документа, появляется пустая строка, изначально она одна, после применения батника их становится две
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Alexander_88 »

Первый раз из-за последней (лишней) пустой строки приходится писать новый кодИзображение:







Код:

Код: Выделить всё

@echo off
set "word_or_frase=text1"
set "replacement=text2"
for %%i in (
"C:\work\fileslink.txt"
"C:\work2\fileslink.txt"
"C:\work3\fileslink.txt"
 ) do (
 mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile(%%i).ReadAll(),"%word_or_frase%","%replacement%"))&Close()">.tmp
 type .tmp>%%i
 )
del.tmp& exit /b



.
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Alexander_88 »

ааа, надо было протестировать сначало(( решил сразу на документе провернуть операцию, блокнот просто стал пустым и все , удалилось все ))



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

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Georgio »

Цитата Alexander_88:



ааа, надо было протестировать сначало(( решил сразу на документе провернуть операцию, блокнот просто стал пустым и все , удалилось все ))
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней






Очевидно, меняли одну строку с пробелами на другую строку с пробелами? Пробелы, символы табуляции и кавычки -- "ложка дёгтя в бочку с мёдом" при использовании конструкций с "mshta" и "vbscript".








Цитата Alexander_88:



а есть код, для удаления всех пустых строк, кроме последней
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней






Есть такой код -- перезапись через "for", только он удалит абсолютно все пустые строки, кроме последней, включая пустые строки между другими строками. Поэтому, по-моему, лучше не допустить их появление, чем потом удалять.







Попробуйте ещё так:







Код:

Код: Выделить всё

@echo off
set "word_or_frase=text 1"
set "replacement=text 2"
for %%i in (
"C:\work\fileslink.txt"
"C:\work2\fileslink.txt"
"C:\work3\fileslink.txt"
 ) do (
 mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile(%%i).ReadAll(),"%word_or_frase: ="+Chr(32)+"%","%replacement: ="+Chr(32)+"%"))&Close()">.tmp
 type .tmp>%%i
 )
del .tmp& exit /b



.
Аватара пользователя
Alexander_88

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Alexander_88 »

также, очистил весь блокнот..





Код:

Код: Выделить всё

Есть такой код -- перезапись через "for", только он удалит абсолютно все пустые строки, кроме последней, включая пустые строки между другими строками

А мне как раз это подойдет, у меня список ссылок, каждая с новой строки (пустых строк в середине нету), и только 1 строка пустая в конце, потом я применяю первый на примере код, для замены текста, он все делает, но после него образуется в конце еще пустая(ые) строки, нужно их убрать, т.е. оставить только одну пустую, которая была изначально
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Сообщение Georgio »

Цитата Alexander_88:



А мне как раз это подойдет, у меня список ссылок, каждая с новой строки (пустых строк в середине нету), и только 1 строка пустая в конце, потом я применяю первый на примере код, для замены текста, он все делает, но после него образуется в конце еще пустая(ые) строки, нужно их убрать, т.е. оставить только одну пустую, которая была изначально
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней








Код:

Код: Выделить всё

@echo off
for %%i in (
"C:\work\fileslink.txt"
"C:\work2\fileslink.txt"
"C:\work3\fileslink.txt"
 ) do (
 for /f "usebackq delims=" %%j in (%%i) do (
  echo.%%j>>.tmp
  )
 type .tmp>%%i& type nul>.tmp
 )
del .tmp& exit /b
Ответить

Вернуться в «Скриптовые языки администрирования Windows»