CMD/BAT - [решено] Помогите удалить из txt ненужные строки

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

CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение root221 »

Здравствуйте,



Помогите удалить всё до первого проблела







Код:

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

qwerty - tgbvfrw
asdfg - hjkl
zxcvbnm - aaaa
asdfghjjj - ssssssss
rtyuiopp - zcdsc
ghjklhgg - saffdsfsd
qaswefg - htyytjytj

В общем надо что бы после запуска вашего скрипта, в текстовом файле оставалось только.





Код:

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

qwerty
asdfg
zxcvbnm
asdfghjjj
rtyuiopp
ghjklhgg
qaswefg



Спасибо за ранее!!
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение Iska »

Цитата root221:



удалить всё до первого проблела
CMD/BAT - [решено] Помогите удалить из txt ненужные строки




Может быть, после первого пробела, включительно?




читать дальше »




Код:

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

@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=%~1
if defined sFile (
	if exist "%sFile%" (
		call :GetTemporaryName
		>"!TemporaryName!" (
			for /f "usebackq delims= " %%i in ("%sFile%") do (
				echo.%%i
			)
		)
		>nul copy /y "%sFile%" "%~dpn1.bak"
		>nul copy /y "!TemporaryName!" "%sFile%"
		del /f /q "!TemporaryName!"
	) else (
		echo Can't find source file [%sFile%].
	)
) else (
	echo Usage: %~nx0 ^
)
endlocal
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion
:NextName
	set sTempName=%temp%\temp%random%.tmp
	if exist "%sTempName%" goto :NextName
	set sProcName=%~0
	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================
Аватара пользователя
Dragokas

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение Dragokas »

Цитата Iska:



Может быть, после первого пробела, включительно?
CMD/BAT - [решено] Помогите удалить из txt ненужные строки




да) вы правы я просто торопился.



Iska, Спасибо конечно за скриптик, не ожидал что будет такой большой. Может вы мой подправите что бы он работал так же как он работает, вот только что-бы скриптик поумнее получился и писал не в лог log.txt а в xxx.txt надо что бы удалял не нужное и всё



а если быть точнее то просто читаем xxx.txt у убираем в нем не нужное.



А в моём примере я просто из xxx.txt в лог нужные мне строки переношу.





Код:

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

@echo off
echo 0>log.txt
for /f "tokens=1,2 usebackq" %%a in ("xxx.txt") do (
echo %%a
)>>log.txt

фигню наверно я сделал но оно работает Изображение
Аватара пользователя
root221

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение root221 »

Цитата root221:



не ожидал что будет такой большой
CMD/BAT - [решено] Помогите удалить из txt ненужные строки




Вы ведь написали:


Цитата root221:



в текстовом файле оставалось только
CMD/BAT - [решено] Помогите удалить из txt ненужные строки




т.е. — в том же файле.



Если усечённые строки сохранять в новый файл — надобность в промежуточном временном файде отпадает (не проверялось):


читать дальше »




Код:

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

@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=%~1
set sDestFile=log.txt
if defined sSourceFile (
	if exist "%sSourceFile%" (
		>"%sDestFile%" (
			for /f "usebackq delims= " %%i in ("%sSourceFile%") do (
				echo.%%i
			)
		)
	) else (
		echo Can't find source file [%sSourceFile%].
	)
) else (
	echo Usage: %~nx0 ^
)
endlocal
exit /b 0








Цитата root221:





Код:

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

echo 0>log.txt

CMD/BAT - [решено] Помогите удалить из txt ненужные строки




Не делайте так. Лучше проверьте, существует ли файл, и если существует — удалите.


Цитата root221:





Код:

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

for /f "tokens=1,2 …

CMD/BAT - [решено] Помогите удалить из txt ненужные строки




Зачем Вам второй токен? Вы его не пользуете.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение Iska »

Смотрите как работает мой скрипт,



1, чистит файл log.txt



2, ищет в файле xxx.txt всё что начинается с первой строки



3, и выводит всё что нашел в консоль



4, потом просто заполняет опять log.txt который ранее был очищен.





А вот что надо мне.



1, ищет в файле file1.txt всё до первого пробела



2, и выводит всё что нашел в консоль



3, потом чистит этот файл file1.txt



4, и в него же записывает то что вывел в консоль





Код:

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

@echo off
for /f "usebackq delims= " %%a in ("file1.txt") do (
echo %%a>file1.txt
)

Просто если так сделать то он записывает только последнюю строчку из наиденного
Аватара пользователя
root221

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение root221 »

Смотрите как работает мой скрипт,



1, чистит файл log.txt



2, ищет в файле xxx.txt всё что начинается с первой строки



3, и выводит всё что нашел в консоль



4, потом просто заполняет опять log.txt который ранее был очищен.





А вот что надо мне.



1, ищет в файле file1.txt всё до первого пробела



2, и выводит всё что нашел в консоль



3, потом чистит этот файл file1.txt



4, и в него же записывает то что вывел в консоль





Код:

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

@echo off
for /f "usebackq delims= " %%a in ("file1.txt") do (
echo %%a>file1.txt
)

Просто если так сделать то он записывает только последнюю строчку из наиденного
Аватара пользователя
root221

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение root221 »

в общем добился я того что мне надо, пока-что вот так





Код:

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

@echo off
echo 0>file2.txt
for /f "usebackq delims= " %%a in ("file1.txt") do (
echo.%%a)>>file2.txt

а хотелось бы что-бы работало вот так





Код:

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

for /f "usebackq delims= " %%a in ("file1.txt") do (
echo.%%a)>file1.txt
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Помогите удалить из txt ненужные строки

Сообщение megaloman »

Цитата root221:



а хотелось бы что-бы работало вот так
CMD/BAT - [решено] Помогите удалить из txt ненужные строки




Не выйдет. Ибо исходный файл будет очищен раньше, чем прочтён. Только через промежуточный временный файл.
Ответить

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