Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перенос и удаление строк из текстового файла (http://forum.oszone.net/showthread.php?t=187189)

sk8ter 02-10-2010 21:50 1509891

Перенос и удаление строк из текстового файла
 
Здравствуйте господа.
В batнике нужно сделать так чтобы: В текстовом файле удалило все строки кроме одной (ex_interp "значение")
Чтото обыватель вроде меня не смог осуществить это(((

1) возможно ли просто удалить все строки кроме одной ?

2) более сложно ><
- вытащить эту строку
- удалить файл
- создать чистый файл и прописать туда эту строку

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

Наверняка смешно звучит, но мне это очень нужно.
Буду признателен если вы поможете мне написать сией скрипт.
Или ткните носом в подходящую мне статью (ну искал, искал - без результата:( )

amel27 03-10-2010 06:14 1510062

1.
Код:

@echo off

set FILE=file.txt
set LINE=ex_interp \"значение\"

findstr /xvic:"%LINE%" "%FILE%" >"%~dpn0.tmp"
del /f "%FILE%"&& ren "%~dpn0.tmp" "%FILE%"

2, 3.
Код:

@echo off

set FILE=file.txt
set LINE=ex_interp \"значение\"

findstr /xic:"%LINE%" "%FILE%" >"%~dpn0.tmp"
del /f "%FILE%"&& ren "%~dpn0.tmp" "%FILE%"


sk8ter 03-10-2010 13:03 1510219

amel27, Благодарю за внимание к моей проблеме.

Но чтото путём подстановок и коррекции у меня ничего не вышло :(


Наверное это изза того что я забыл уточнить то , что значение ex_interp всегда различно(как в цифрах, так и в лат.буквах)
Вот как оно выглядит в текстовике:

Код:

ex_interp                    "0.032"

amel27 03-10-2010 13:59 1510254

Цитата:

Цитата sk8ter
значение ex_interp всегда различно(как в цифрах, так и в лат.буквах) »

чем-то отличается эта строка от остальных?.. что в ней неизменно и что может меняться?

sk8ter 03-10-2010 14:52 1510289

amel27 ex_interp "здесь параметры от приложения, как уже писал - и цифры и латинские буквы и все вперемешку"
вот последнее что там было:
Код:

ex_interp                    "b8e24546d307b811456d82e68befddd3"

amel27 03-10-2010 15:42 1510325

Код:

@echo off

set FILE=file.txt
set LINE=ex_interp  *\".*\"

findstr /xvirc:"%LINE%" "%FILE%" >"%~dpn0.tmp"
del /f "%FILE%"&& ren "%~dpn0.tmp" "%FILE%"

Код:

@echo off

set FILE=file.txt
set LINE=ex_interp  *\".*\"

findstr /xirc:"%LINE%" "%FILE%" >"%~dpn0.tmp"
del /f "%FILE%"&& ren "%~dpn0.tmp" "%FILE%"


sk8ter 03-10-2010 16:09 1510351

Странно.
После первого скрипта ничего не изменилось, а второй просто полностью очищает файл :(

amel27 03-10-2010 16:37 1510362

исходный файл (file.txt):
Код:

ex1                          "111"
ex_interp                    "b8e24546d307b811456d82e68befddd3"
ex2                          "222"

file.txt после 1-го скрипта:
Код:

ex1                          "111"
ex2                          "222"

file.txt после 2-го скрипта:
Код:

ex_interp                    "b8e24546d307b811456d82e68befddd3"

sk8ter 03-10-2010 16:49 1510369

Значит это уже какието косяки моей системы.
Т.к. первый шаг проходит на ура, а затем второй просто удаляет всё остальное

amel27 03-10-2010 17:16 1510376

Цитата:

Цитата sk8ter
затем второй просто удаляет всё остальное »

само собой, так как 2-й скрипт рассчитан на работу с исходным file.txt, а не с результатом после 1-го скрипта

sk8ter 03-10-2010 17:21 1510379

Цитата:

Цитата amel27
Цитировать »

Значит после удаления всего остального, заветная строка почемуто не прописывается в файл?

amel27 03-10-2010 17:38 1510391

исходный файл (file.txt):
Код:

ex1                          "111"
ex_interp                    "b8e24546d307b811456d82e68befddd3"
ex2                          "222"

file.txt после 2-го скрипта:
Код:

ex_interp                    "b8e24546d307b811456d82e68befddd3"

sk8ter 03-10-2010 17:48 1510395

Даже не представляю что не так мои кривые руки писали)
Всё работает.
Огромнейшая блигодарность вам уважаемый :pray:

sk8ter 03-10-2010 18:32 1510438

Последний идиотский вопрос :sorry:
Что надо изменить чтобы можно было провести эту операцию из батника, который лежит на один уровень выше.
Ну скажем в каталоге лежат - remove.bat и папка console с текстовиком

amel27 03-10-2010 19:23 1510460

Код:

@echo off

set FILE=console\file.txt
set LINE=ex_interp  *\".*\"

findstr /xvirc:"%LINE%" "%FILE%" >"%~dpn0.tmp"
move /y "%~dpn0.tmp" "%FILE%"

Код:

@echo off

set FILE=console\file.txt
set LINE=ex_interp  *\".*\"

findstr /xirc:"%LINE%" "%FILE%" >"%~dpn0.tmp"
move /y "%~dpn0.tmp" "%FILE%"


sk8ter 03-10-2010 19:35 1510469

Сердешное спасибо :up


Время: 05:36.

Время: 05:36.
© OSzone.net 2001-