Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127

Работа с текстом, чтение из файла

27.07.2021, 17:59. Показов 3122. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, хотел бы уточнить у знающих людей, как можно выполнить поиск подстроки в строке? (наподобие contains в c#)
Есть ini-файл, мне нужно пропускать секции и забирать только ключи-значения (я работаю с ini как с текстовыми файлами).
Собственно, есть ini-файл:

Bash
1
2
3
4
5
6
[Data]
Key = 84325EFC0ABD0CF610EA6AC1411F7BC9
Step = 5
House = 255
Number = 255
Value = 0.000000
И код, его обрабатывающий

Bash
1
2
3
4
5
6
7
8
9
10
11
12
For  %%f in (*.ini) do (
        rem тут я обнуляю переменные
    Set key=
        Set value=
        For /F "tokens=1,3" %%a in (%%f) do (
                rem ВОТ СЮДА Я ХОЧУ ПОМЕСТИТЬ ПРОВЕРКУ НА ТО, ЧТО СТРОКА ЯВЛЯЕТСЯ СЕКЦИЕЙ ИЛИ СОДЕРЖИТ[*]
                rem ЕСЛИ СОДЕРЖИТ, ТО НУЖНО ПРОПУСТИТЬ ЦИКЛ
            Set key=!key!`%%a`,
            Set value=!value!'%%b',
        )
        Echo "INSERT INTO `information` (!key:~0,-1!) VALUES (!value:~0,-1!)" >> C:\tmp\result.txt
)
Возможно ли реализовать это в batch и каким образом?
И второй вопрос, в ini-файле есть ключи такого вида:
Bash
1
2
Phone number = 34535345
User pass = qwerty123
Получается, что tokens3 будет равен уже не ключу, а символу =. Возможно ли сделать обход пробелов в имени ключа?
Спасибо заранее!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2021, 17:59
Ответы с готовыми решениями:

Работа с текстом из файла
чуваки помогите,мне надо чтобы с текстового файла считало предложение потом его перевело как @введеные слова:кот ест...

Работа с текстом из файла
Народ помогите плиз !!! Надо прочитать текст из файла , для дальнейшей работы с ним (текстом) , т.е. надо записать весь текст в массив , у...

Работа с текстом из файла
Создать txt-файл, вставить туда любую англоязычную статью из Википедии. Реализовать одну функцию, которая выполняет следующие операции: ...

15
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,770
27.07.2021, 18:55
W1nStoN, for-у с ini не стоит ручкаться. См. мой старый ответ.
0
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 19:03  [ТС]
FlasherX, хорошо, не могли бы Вы дать пример использования find findstr без перебора строк for'ом, при работе с ini. Я не скажу, что я крайне не понимаю, но значительные непонятки присутствуют.
Вы же видите, что я перебираю его циклом, потому что создаю из всех пар ключ=значение SQL-запрос, с n-количеством ключей и значений
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 19:04
W1nStoN, добрый вечер! Я бы сделал так:
Windows Batch file
1
@powershell -executionpolicy bypass -command "get-content '*.ini' | foreach {if ($_ -match '.+=.+') {$_}} | out-file 'C:\tmp\result.txt' default"
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,770
27.07.2021, 19:08
W1nStoN, прежде стоит обратить внимание на условие в контексте. Оно исполнимо? Если нет, то логично использовать предложенные инстументы, которые справяться с этим куда точнее и быстрее.
0
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 19:12  [ТС]
Karen87, Да, Вы получаете все пары ключ=значение и выводите их в файл, но мне нужно распределить их в SQL-запрос

Пример:
INSERT INTO `users` (`Name`,`Pass`,`Salt`,`Value`) VALUES ('Sam','qwerty','0123dadawd','104')

Поэтому я и использую for и tokens, дабы равномерно распределять пары ключ=значение по такому шаблону:
"INSERT INTO `users` (!key:~0,-1!) VALUES (!value:~0,-1!)"
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 19:22
W1nStoN, а так:
Windows Batch file
1
powershell -executionpolicy bypass -command "get-content '*.ini' | foreach {if ($_ -match '.+=.+') {"""INSERT INTO USERS $(($_ -split '=')[0]) VALUES $(($_ -split '=')[1])"""}} | out-file 'C:\tmp\result.txt' default"
0
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 19:29  [ТС]
Karen87, результатом выполнения Вашего кода будет:

Bash
1
2
3
4
5
6
7
INSERT INTO USERS Key  VALUES  84325EFC0ABD0CF610EA6AC1411F7BC9
INSERT INTO USERS Level  VALUES  5
INSERT INTO USERS House  VALUES  255
INSERT INTO USERS Bizz  VALUES  255
INSERT INTO USERS AdminLevel  VALUES  7
INSERT INTO USERS Fuelcar  VALUES  0.000000
INSERT INTO USERS Phone number  VALUES  7
7 различных запросов
А мне же нужно последовательно внести их в один запрос.

Может мне все-таки кто-то подскажет, как можно проверить строку на наличие в ней подстроки через find или IF и пропустить итерацию?
Upd. даже в powershell не обойтись без цикла, ибо у меня идет последовательное заполнение
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 19:52
W1nStoN, так-то нормально?
Windows Batch file
1
@powershell -executionpolicy bypass -command "get-content '*.ini' | foreach {if ($_ -match '.+=.+') {$string_1+="""'$(($_ -split '=')[0].TrimEnd().Trimstart())', """; $string_2+="""'$(($_ -split '=')[1].TrimEnd().Trimstart())', """}}; """INSERT INTO USERS ($($string_1 -replace '.{2}$')) VALUES ($($string_2 -replace '.{2}$'))""" | out-file 'C:\tmp\result.txt' default"
1
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 20:10  [ТС]
Karen87, Идеально, Вы извините за наглость, я просто в powershell не силен, но обещаю, что почитаю документацию)
Хочу последний вопрос задать.
Вот таких файлов у меня в папке > 1, следовательно мне нужно циклом проходиться, чтобы из каждого ini сконвертировать такие запросы.
В силу своей неосведомленности, я бы хотел попросить Вас написать пример перебора файлов в каталоге на powershell
Огромное Вам спасибо заранее!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 20:14
W1nStoN, я правильно понимаю, что должно быть так:
1 файл ini = 1 файл txt?

Добавлено через 52 секунды
То есть не так. 1 файл ini = 1 строка в result.txt?
0
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 20:43  [ТС]
Karen87, нет, проходимся по всем ini и заносим их все в 1 txt
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 20:45
Лучший ответ Сообщение было отмечено W1nStoN как решение

Решение

Цитата Сообщение от W1nStoN Посмотреть сообщение
все ini файлы проходятся и заносятся в 1 txt
В коде выходной файл будет C:\tmp\result.txt
Windows Batch file
1
@powershell -executionpolicy bypass -command "$files=Get-ChildItem '*.ini'; foreach ($file in $files) {get-content $file | foreach {if ($_ -match '.+=.+') {$string_1+="""'$(($_ -split '=')[0].TrimEnd().Trimstart())', """; $string_2+="""'$(($_ -split '=')[1].TrimEnd().Trimstart())', """}}; """INSERT INTO USERS ($($string_1 -replace '.{2}$')) VALUES ($($string_2 -replace '.{2}$'))""" | out-file 'C:\tmp\result.txt' -append default; $string_1=$null; $string_2=$null}"
1
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
27.07.2021, 23:09  [ТС]
Karen87, Огромное Вам спасибо! Пойду читать документацию по powershell
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
27.07.2021, 23:17
W1nStoN, не за что
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.07.2021, 23:53
Цитата Сообщение от W1nStoN Посмотреть сообщение
просто в powershell не силен
Просто посмотри как силен PS и навсегда забудь про попытки сделать что-то на batch, кроме исполнения простых команд или запуска внешних утилит.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2021, 23:53
Помогаю со студенческими работами здесь

Работа с текстом из txt файла
Доброго времени суток всем! Очень нужна ваша помощь!( Суть проблемы в следующем: Программа запускает cmd.exe и выполняет команду...

Работа с текстом из файла, посимвольный вывод
Здравствуйте, помогите мне понять, как сделать так, чтобы программа, например нажав на кнопку "Пробел" выводила мне каждый символ...

Работа с текстом из файла и дальнейшая его обработка
Здрасте! Недавно выдали задание для курсовой работы: - обеспечить возможность ввода текста из файла; - текст вводится либо до конца...

Чтение файла и работа с Linq
Как должен выглядеть метод, написанный с помощью Linq, который из файла выбирает значения и их сравнивает, если больше четных - их...

Работа с файлами (чтение из файла)
Кто-нибудь может помочь с заданием: В исходном текстовом файле подготовить данные о программе телепередач одного телевизионного канала на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru