Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Копирование строк текста , начинающихся с определенного символа

День добрый!

Надо создать командный файл , который бы получал в качестве параметра какой-либо символ и в зависимости от второго параметра копировал все строки начинающиеся с этого символа , либо начинающиеся не с него из файла text.txt в файл temp.txt

написал такой вот код :

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
chcp 1251
cls
set file=C:\Users\Vasya\Desktop\text.txt
 
 
if "%2"=="delete" (
findstr /i /r /v "[\<%1.*]" %file% >> temp.txt
pause
exit
)
 
 
if "%2"=="keep" (
findstr /i /r "[\<%1.*]" %file% >> temp.txt
pause
exit
)
Однако он не работает . При параметре delete выводит абсолютно все строчки в файл temp.txt , а при keep файл temp.txt пуст .

text.txt написан от балды , его содержание значения не имеет

Код
невтвап
аватв
бватвт
вватват
гватва
дватва
еватва
ёваптвапт
жвтат
зватпвап
ивптат
квтпав
лаптва
мкете
наерк
овтпа
пватпва
рватав
ствтп
тваптв
Ответ:
Сообщение от markrihter
Основной вопрос заключался в том , почему findstr не работает . Как оказалось он неадекватно работает с кирилицей , после переключения на латиницу все сразу же заработало.
findstr вполне себе работает.
Я бы сказал наоборот: с таким неадекватным кодом, findstr может вести себя только так, как у него записано в алгоритмах, а не так, как ожидал составитель кода... уж извините.

Для того, чтобы findstr работал с кириллицей так, как хочет составитель кода, необходимо привести в соответствие кодировку файла с текстом с кодировкой консоли, либо учитывать и конвертировать при необходимости, кодировку существующего файла во время считывания данных...
Здесь важный момент: не только кодировку файла с кодом, но в первую очередь, ещё и кодировку файла с данными...
Вопрос: Сохранение в отдельных файлах всех фрагментов текста из текстового файла, ограниченных определёнными символами

Доброго дня!

Просьба помочь написать батник.
Есть текстовый файл который необходимо разбить на n кол-во файлов, чтобы в файлы записывались значения по абзацам, каждый абзац начинается и заканчивается определенным символом. Допустим разделителем абзацов будет < и >
Пример изначального файла:

<************sfdsdf> <********> <*********sdfsdf> <dsfsdf*****sdfsdf*****
sdfsdf>

Должно получиться соответственно 4 текстовых файла с значениями:
1.<************sfdsdf>
2.<********>
3.<*********sdfsdf>
4.<dsfsdf*****sdfsdf*****
sdfsdf>

Кол-во таких абзацов не ограничено и может превышать 1000.
Заранее спасибо.
Ответ: Abkbgg, Я понимаю,что решение найденно.Но все же.Разделение идет по обзацам ,то есть текст начинающийся с красной строки и продолжающийся до следующей красной строки.Это и есть абзац?потому что то что ты привел в пример в своем задании это разделители по предложениям.
Вопрос: Удаление в XML-файле текста после определённого символа

Помогите скриптом. Есть куча файлов с разными расширениями формата от 121 до 10103 и более. все обычные текстовые файлы. для дальнейшей работы с ними нужно удалять информацию из них после строки </Response>. можно ли как нибудь это сделать. Заранее спасибо.
P.S. если можно то поподробнее, так как новичок в этом.
Ответ: \\Благодарочка
Большое спасибо вам за ваш скрипт. К сожалению под мои нужды он не подошел, так как довести его до ума в "силу отсутствия мысли", я пока что не смог.
\\Просьба
Если вас это не затруднит, не могли бы вы, кратко объяснить, как мне переделать скрипт таким образом, чтобы получился:
скрипт, который удаляет в файлах весь текст включая "кракозябры(УкраїнС&©qziНН«6’‰‰*г )" перед тегом "<?xml version="1.0" encoding="windows-1251"?>" и после тега "</RESPONSE>". То есть, визуально:

УкраїнС&©qziНН«6’‰‰*г - "кракозябры"
<?xml version="1.0" encoding="windows-1251"?>
...теги
.........
</RESPONSE>
<> - тоже теги но их удаляем

Добавлено через 1 час 44 минуты
без кракозябров удаляет на ура, а вот с кракозябрами, проблемы начинаются, как я понял где-то с этой строки:
content = .ReadAll()
Так как у скрипта возникают проблемы с чтением таких файлов. (Хз может я не прав).

Добавлено через 1 час 5 минут
А еще лучше напишите как в notepad++ применить макрос к n-количеству файлов. =)
Нашел на другом форуме() скрипт который удаляет текст между тегами, но и он не справляется с кракозябрами. =(
Вопрос: Автоматическое заполнение значенияв ячейке от данных в другой, в которых текст начинается определенным образом

Привет, подскажите какую надо подставлять формулу, чтобы в одном столбце автоматически приписывалось определенное значение, когда в другом столбце данные начинаются, например, с 1. ,3. ,5.
Ответ: Формула массива
Код
=ИНДЕКС(B$1:B$999;НАИМЕНЬШИЙ(ЕСЛИ(J$3=A$1:A$999;СТРОКА(A$1:A$999));СТРОКА(A1)))
Скрыть ошибку в Excel 2007 и выше можно функцией ЕСЛИОШИБКА()
Вопрос: Перемещение и копирование частей строки, расположенных между определёнными символами, в новые строки

День добрый!

Прошу Вашей помощи, задача следующая: есть txt файл следующего содержания:

26_1201M.028:10447033;10447034;10447035:Заблокировать:12.01.2016
26_1201M.029: 10103460:Заблокировать:12.01.2016
26_1201M.030: 10036813:Заблокировать:12.01.2016
26_1201M.032:10288318;10288319:Заблокировать:12.01.2016
26_1201M.033: 741497:Заблокировать:12.01.2016
Необходимо во всех строках где есть точка с запятой, взять число после ";" разбить на несколько строк оставив при этом в каждой строке неизменной фразу после второго ":" и в итоге заменить ";" на ":", т.е. должно получится вот так:

26_1201M.028:10447033:Заблокировать:12.01.2016
26_1201M.028:10447034:Заблокировать:12.01.2016
26_1201M.028:10447035:Заблокировать:12.01.2016
26_1201M.029: 10103460:Заблокировать:12.01.2016
26_1201M.030: 10036813:Заблокировать:12.01.2016
26_1201M.032:10288318:Заблокировать:12.01.2016
26_1201M.032:10288319:Заблокировать:12.01.2016
26_1201M.033: 741497:Заблокировать:12.01.2016
Заранее благодарен за помощь!
Ответ:

Не по теме:

Отвечаю себе пост 5.
Еще усложним:

Code
1
2
3
Вышел, за яц, на, крыльцо
а, там
хорошая, пог ода
вот так выведет и строки и подстроки в массив, соблюдая пробелы в слове, но убирая их спереди и в конце:
Windows Batch file
1
2
3
4
@echo off
set "in=file1.txt" & set "out=file2.txt"
cmd /v /c "for /f "usebackq delims=" %%a in ("%in%") do set "x=%%~a" & for %%b in ("!x:,=","!") do set "y=%%~b" & if "!y:~0,1!" neq " " (echo.%%~b>>"%out%") else (echo.!y:~1!>>"%out%")"
exit /b
.



Добавлено через 4 минуты
Модераторы, вынесите, пожалуйста, в отдельную тему, а то что-то я тормознул это сделать, кому-то пригодится, а будет здесь телепаться.
Вопрос: Удаление в определенных строках текста символа переноса строки

Здавствуйте, уважаемые форумчане. Прошу помощи в реализации скрипта удаления в текстовом файле переноса строки в строках которые начинаются "nazwa" и "khnazwa".

Прмер:
nazwa =`ADKAR` Zarzycki s.c
Help In Road
miejscowosc =any

а должно выглядеть так:
nazwa =`ADKAR` Zarzycki s.c Help In Road
location =any

Пример 2:
khnazwa =`Cerrad`
Community Health Systems
khadres =any

а должно выглядеть так:
khnazwa =`Cerrad` Community Health Systems
khadres =any
Ответ: Да, уверен. Немного не мой случай, но всё равно спасибо за участие.

Добавлено через 5 часов 12 минут
Прошу помощи в реализации следующей логики:
Ищем строчку, что начинается на "nazwa =" и проверяем начало следующей, если она содержит "miejscowosc =" идем дальше, а если нет, удаляем знак переноса строки в строчке с "nazwa =" и идем дальше.

Также и в строчке, что начинается на "khnazwa =" проверяем начало следующей, если она содержит "khadres =" идем дальше, а если нет, удаляем знак переноса строки в строчке с "khnazwa =" и идем дальше.

nazwa =PRZEMEX-TRUCK-SHOP
Przemysław Szlachta
miejscowosc =Any

khnazwa =PRZEMEX-TRUCK-SHOP
Przemysław Szlachta
khadres =Any
Вопрос: Выполнение условия в bat файле по наличию текста в определённом файле

Задача: найти опеределённую строчку текста в файле и если она совпадает с искомой, то выполнить goto metka в bat файле, иначе goto metka2

Причина поиска: Раз в сутки на парке машин запускается bat файл. Нужно убрать с выполнения запуск этого bat файла у тех машин, на которых в логах уже отметилось выполненное задание запущенного bat файла. На тех машинах, где задание не было выполнено - задание будет выполнятся один раз (metka), а при следующем запуске bat файла будет выполняться поиск строки текста, сравнение с искомой и пропуск задания (metka2), если строка присутствует в логах.
Ответ: Предложенный код не работает.

Добавлено через 12 минут
Проблема в раскрытии переменной в этой части

c:"\<%s%\>"

Заменил \<%s%\> на искомый текст и всё заработало.
Вопрос: Выделить все строки, в которых есть символ

Как выделить все строки в которых есть символ "@" и удалить те, в которых нет
Ответ: Если столбцов очень много, то формула для сцепки будет очень большая. В этом случае можно использовать формулу
Код
=СЧЁТ(ИНДЕКС(ПОИСК("@";A1:Z1);))
Диапазон по фактической таблице.
Автофильтром выбираете строки с нулем и удаляете.
Вопрос: Необходимо найти строку по искомому значению и взять из найденной строки текст

Помогите, пожалуйста, решить задачу.

В первом столбце есть набор строк. Количество строк случайное (может быть 12, может быть 40). Каждая строка начинается с определенного кода (3 цифры).
Из всего набора нужно найти строку, которая начинается на "700" и взять из нее текст. Мне необходимо получить только ФИО ($a и $g), остальное не включать в выборку.
6060#$3BY-NLB-ar3725 $aБЕЛОРУССКИЙ ЯЗЫК $2DVNLB
6060#$3BY-NLB-ar28089 $aРЕМЁСЛА $2DVNLB
607##$3BY-NLB-ar42135 $aБеларусь
700#1$3BY-SEK-414771 $aКніга $bУ. Д. $gУладзімір Дзмітрыевіч $cкандыдат філалагічных навук
801#0$aBY $bBY-HM0000 $c19971031 $gpsbo
899##$aBY-HM0000 $p26Ад698

Формула находит: Кніга Уладзімір Дзмітрыевіч, но здесь все привязано к конкретной строке (строка 46).
Код
=ПСТР(A46;ПОИСК("$a";A46)+2;ПОИСК("$b";A46)-2-ПОИСК("$a";A46))&ПСТР(A46;ПОИСК("$g";A46)+2;ПОИСК("$c";A46)-2-ПОИСК("$g";A46))
Формула находит 700 строку, в которой нужно сделать выборку.
Код
=ПРОСМОТР(2;1/(ЛЕВБ($A$3:$A$174;3)="700");$A$3:$A$174)
Как объединить эти две формулы?
Или есть более простой способ найти 700 строку и достать ФИО (в данном случае Кніга Уладзімір Дзмітрыевіч)
Заранее спасибо.
Ответ: AlexM, спасибо Вам за решение и пояснения. Очень признателен.
Вопрос: Как при копировании xcopy в путь файла включить папку которая оканчивается на определенные символы

Помогите пожалуйста!
как при копировании xcopy в путь файла включить папку которая оканчивается на определенные символы, которые разные на разных пк
или которая находится одна в предыдущей папке.
xcopy "%AppData%\Mozilla\firefox\profiles\папка название которой разное на разных пк оканчивается всегда на .default \key3.db" "%~d0\NO\MD\FOFM" /c/h/y/
Ответ: У нас воровством паролей не занимаются.
Закрыто