Alexander_88 |
05-01-2015 00:44 2452050 |
удалить все пустые строки, кроме самой последней
здравствуйте, есть код, он заменяет текст с одного на другой
Код:
@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
но к сожалению, добавляет пустые строки, можно ли удалить все пустые строки из нескольких заданных тхт файлов, а последнюю пустую строку оставить?
|
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 |
05-01-2015 01:28 2452065 |
заменил, но в конце документа, появляется пустая строка, изначально она одна, после применения батника их становится две
|
Первый раз из-за последней (лишней) пустой строки приходится писать новый код:):
Код:
@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 |
05-01-2015 10:10 2452116 |
ааа, надо было протестировать сначало(( решил сразу на документе провернуть операцию, блокнот просто стал пустым и все , удалилось все ))
а есть код, для удаления всех пустых строк, кроме последней, я бы просто отдельным батником запускал и все, только чтобы можно было несколько файлов вписать в обработку
|
Цитата:
Цитата Alexander_88
ааа, надо было протестировать сначало(( решил сразу на документе провернуть операцию, блокнот просто стал пустым и все , удалилось все )) »
|
Очевидно, меняли одну строку с пробелами на другую строку с пробелами? Пробелы, символы табуляции и кавычки -- "ложка дёгтя в бочку с мёдом" при использовании конструкций с "mshta" и "vbscript".
Цитата:
Цитата Alexander_88
а есть код, для удаления всех пустых строк, кроме последней »
|
Есть такой код -- перезапись через "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 |
05-01-2015 11:32 2452128 |
также, очистил весь блокнот..
Код:
Есть такой код -- перезапись через "for", только он удалит абсолютно все пустые строки, кроме последней, включая пустые строки между другими строками
А мне как раз это подойдет, у меня список ссылок, каждая с новой строки (пустых строк в середине нету), и только 1 строка пустая в конце, потом я применяю первый на примере код, для замены текста, он все делает, но после него образуется в конце еще пустая(ые) строки, нужно их убрать, т.е. оставить только одну пустую, которая была изначально
|
Цитата:
Цитата Alexander_88
А мне как раз это подойдет, у меня список ссылок, каждая с новой строки (пустых строк в середине нету), и только 1 строка пустая в конце, потом я применяю первый на примере код, для замены текста, он все делает, но после него образуется в конце еще пустая(ые) строки, нужно их убрать, т.е. оставить только одну пустую, которая была изначально »
|
Код:
@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
|
Alexander_88 |
05-01-2015 12:43 2452155 |
спасибо Georgio, работает :)
|
Время: 11:24.
© OSzone.net 2001-