Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

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

Ветеран


Сообщения: 541
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
@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
но к сожалению, добавляет пустые строки, можно ли удалить все пустые строки из нескольких заданных тхт файлов, а последнюю пустую строку оставить?

Отправлено: 00:44, 05-01-2015

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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
.

Отправлено: 01:18, 05-01-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 541
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

Отправлено: 01:28, 05-01-2015 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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


Код: Выделить весь код
@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

.

Отправлено: 01:51, 05-01-2015 | #4


Ветеран


Сообщения: 541
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

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

Последний раз редактировалось Alexander_88, 05-01-2015 в 10:16.


Отправлено: 10:10, 05-01-2015 | #5


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата 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

.

Отправлено: 11:18, 05-01-2015 | #6


Ветеран


Сообщения: 541
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 11:32, 05-01-2015 | #7


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:04, 05-01-2015 | #8


Ветеран


Сообщения: 541
Благодарности: 4

Профиль | Отправить PM | Цитировать


спасибо Georgio, работает

Отправлено: 12:43, 05-01-2015 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] удалить все пустые строки, кроме самой последней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - удалить все файлы с раб.стола, кроме определенных ярлыков. через КД santey007 Скриптовые языки администрирования Windows 29 04-02-2015 10:53
PowerShell - [решено] удалить все пустые подпапки firstarey Скриптовые языки администрирования Windows 4 25-07-2014 11:47
2010 - [решено] Как удалить все стили (кроме по умолчанию) в ворд? Pozia Microsoft Office (Word, Excel, Outlook и т.д.) 13 31-03-2012 19:28
CMD/BAT - [решено] Удалить все файлы из папки кроме нужных Sirimika Скриптовые языки администрирования Windows 16 12-11-2010 10:33
VBS/WSH/JS - [решено] Нужно быстро (!) удалить пустые строки во всех txt-файлах из одной директории andreton Скриптовые языки администрирования Windows 10 08-06-2010 03:39




 
Переход