Войти

Показать полную графическую версию : [решено] Перенос и удаление строк из текстового файла


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

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

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

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

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

amel27
03-10-2010, 06:14
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
amel27, Благодарю за внимание к моей проблеме.

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


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

ex_interp "0.032"

amel27
03-10-2010, 13:59
значение ex_interp всегда различно(как в цифрах, так и в лат.буквах) »чем-то отличается эта строка от остальных?.. что в ней неизменно и что может меняться?

sk8ter
03-10-2010, 14:52
amel27 ex_interp "здесь параметры от приложения, как уже писал - и цифры и латинские буквы и все вперемешку"
вот последнее что там было:
ex_interp "b8e24546d307b811456d82e68befddd3"

amel27
03-10-2010, 15:42
@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
Странно.
После первого скрипта ничего не изменилось, а второй просто полностью очищает файл :(

amel27
03-10-2010, 16:37
исходный файл (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
Значит это уже какието косяки моей системы.
Т.к. первый шаг проходит на ура, а затем второй просто удаляет всё остальное

amel27
03-10-2010, 17:16
затем второй просто удаляет всё остальное »само собой, так как 2-й скрипт рассчитан на работу с исходным file.txt, а не с результатом после 1-го скрипта

sk8ter
03-10-2010, 17:21
Цитировать »
Значит после удаления всего остального, заветная строка почемуто не прописывается в файл?

amel27
03-10-2010, 17:38
исходный файл (file.txt):
ex1 "111"
ex_interp "b8e24546d307b811456d82e68befddd3"
ex2 "222"

file.txt после 2-го скрипта:
ex_interp "b8e24546d307b811456d82e68befddd3"

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

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

amel27
03-10-2010, 19:23
@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
Сердешное спасибо :up




© OSzone.net 2001-2012