Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Найти текст по маске в файле и вставить найденные значения в ini файл

Ответить
Настройки темы
CMD/BAT - [решено] Найти текст по маске в файле и вставить найденные значения в ini файл

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую, пожалуйста помогите(((
Нужно из файла с таким текстом:
Код: Выделить весь код
Connected display devices:
  [0] \\.\DISPLAY1                  NVIDIA GeForce GTX 1070
      \\.\DISPLAY1\Monitor0           Generic PnP Monitor
          Settings: 2560x1080 32bit @60Hz default

  [1] \\.\DISPLAY2                  NVIDIA GeForce GTX 1070
      \\.\DISPLAY2\Monitor0           Generic PnP Monitor
          Settings: 1920x1080 32bit @60Hz default

  [2] \\.\DISPLAY3                  NVIDIA GeForce GTX 1070
  [3] \\.\DISPLAY4                  NVIDIA GeForce GTX 1070
вытянуть значения разрешения экрана дисплея 1 и сохранить их в ini файл последними строками в виде
HorizontalResolution=2560
VerticalResolution=1080
если с точной нумерацией строк проще можно сохранить в 45-46 строке

Отправлено: 00:25, 09-01-2019

 

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Аннотация 2019-01-10 031836.jpg
(103.4 Kb, 4 просмотров)

Цитата alpap:
запускать рядом с SADXModLoader.ini или указать полный путь к нему в строках 3 и 14, если есть пробелы взять путь в парные кавычки. »
ни как не хочет

Отправлено: 23:23, 09-01-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


можно еще как то сделать такое, что бы из ini файла удалялась строка или строки с определённым значением , потом заново нумеровало параметры чтобы не было пропусков
Код: Выделить весь код
@Echo Off
	Set "FileIni=Z:\Soft_In\SADXModLoader.ini"
	Set "Key=Mod"
	Set "Val="Perfect Chaos Music Swap" "sadx-frame-limit" "EggCarrierOceanMusic""

	Set /A M=0
	Move /Y "%FileIni%" "%FileIni%.bak" >nul
	>"%FileIni%" (FOR /F "usebackq tokens=1* delims==" %%i IN ("%FileIni%.bak") DO Set "S=%%i" &Call :OutAll "%%i" "%%j" %%S:%Key%=%%)
GoTo :Eof

:OutAll
	Set /A N=0
	Set /A N=%3 2>nul
	If %N% GTR 0 If %1=="%Key%%N%"  Call :Out1 %2 &GoTo :Eof
	(Echo %~1=%~2)
GoTo :Eof

:Out1
	Set "Value=%~1"
	For %%a IN (%Val%) DO Call Set "Value=%%Value:%%~a=%%"
	If Not %1=="%Value%" GoTo :Eof
	Set /A M+=1
	(Echo %Key%%M%=%~1)
GoTo :Eof
Список строк со значением параметров, которые надо убить, в переменной Val
Цитата Anidzuka:
вытянуть значения разрешения экрана дисплея 1 и сохранить их в ini файл последними строками в виде
HorizontalResolution=2560
VerticalResolution=1080 »
В представленном образце ini-файла эти строки первые. Или это другой ini-файл? Или надо убить эти строки и записать новые в конец?
Если тупо записать в конец
Код: Выделить весь код
@Echo Off
	Set "FileRes=Z:\Soft_In\Res.txt"
	Set "FileIni=Z:\Soft_In\SADXModLoader.ini"
	Set "Res=Settings"

	>>"%FileIni%" (FOR /F "usebackq tokens=1,2,3 delims=:x " %%i IN ("%FileRes%") DO If "%%i"=="%Res%" (
		(Echo HorizontalResolution=%%j) 
		(Echo VerticalResolution=%%k)
		GoTo :Continue
	))
	:Continue
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 09-01-2019 в 23:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:25, 09-01-2019 | #12


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Аннотация 2019-01-10 032943.jpg
(204.6 Kb, 2 просмотров)

Цитата alpap:
вероятно ваши изменения в ini затрагивают его кодировку, ну никак изменение чередования строк не должны влиять на работоспособность, только изменения в строках ну и их добавление или отсутствие. Интересно бы проверить, но это же все также надо поустанавливать. »
да нет дела как раз в том что если удалить строку то не будет ключа 18,20 видит что нет параметра 19 но есть 20 , всё ошибка, если просто убрать значение тоже ошибка и оставить "mod**=" ошибка , вот и получается что после удаление нужно заново пронумировать Mod**

Отправлено: 23:40, 09-01-2019 | #13


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


а так все-таки?
Код: Выделить весь код
@echo off
set "f=Диск:\Папка\SADXModLoader.ini"
set "H=HorizontalResolution"
set "V=VerticalResolution"

for /f "delims=" %%a in ('wmic path "win32_desktopmonitor" get ScreenHeight^,ScreenWidth /value^|find "="') do set "%%a"
<"%f%">$ (for /f "delims=" %%a in ('more') do @(
  echo %%a|>nul find "%H%" && echo %H%=%ScreenWidth%
  echo %%a|>nul find "%V%" && echo %V%=%ScreenHeight%
  echo %%a|>nul findstr /v /c:"%H%" /c:"%V%" && echo %%a
 )
)& >nul move $ "%f%"
pause
Здесь путь настоящий укажите: set "f=Диск:\Папка\SADXModLoader.ini"

Отправлено: 23:54, 09-01-2019 | #14


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
В представленном образце ini-файла эти строки первые. Или это другой ini-файл? Или надо убить эти строки и записать новые в конец? »
файл тот, просто этих строк изначально не будет ))) просто супер , все как часики работает )))) Хорошо когда мозги в голове есть всё так красиво и просто сделано , красота а не работа ))) Спасибо)))

Цитата alpap:
а так все-таки? »
ошибки нет, но и текста тоже, а он с 64x работает?

Последний раз редактировалось Anidzuka, 10-01-2019 в 00:08.


Отправлено: 23:55, 09-01-2019 | #15


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


и еще я никак не пойму, если было
Mod16=smooth-cam
Mod17=SoundOverhaul
Mod18=SteamAchievements
Mod19=super-sonic
Mod20=DLCs

и станет с изменением по порядку
Mod16=smooth-cam
Mod17=SoundOverhaul
Mod18=super-sonic
Mod19=DLCs

то сразу видно что теперь
значение 'super-sonic' уже имеет Mod18 а не Mod19
и далее все аналогично сбивается (смещается), а это уже точно неправильно, не?
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:03, 10-01-2019 | #16


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата alpap:
и еще я никак не пойму, если было »
под каким номером значение вписке приложению без разницы ) а вот отсутствия номера уже ошибка

Спасибо, узнал столько нового, вы все просто СУПЕРРРРРР

Последний раз редактировалось Anidzuka, 10-01-2019 в 00:31.


Отправлено: 00:10, 10-01-2019 | #17


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, только что понял что значения и обратно нужно будет вставить ((( дико извиняюсь, а можно точно такой же как и с удалением , но только добавление параметра мод с определённым значением ? если возможно сделать так чтобы добавление происходило только если данного значения нет ( простите((

Отправлено: 01:13, 10-01-2019 | #18


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Anidzuka:
но и текста тоже »
какого... текста вы ждете. Изменения сразу (записываются) происходят в ini, вероятно у вас в искомых строках как раз и записаны ваши дефолтные размеры и не видно изменений. Попробуйте самостоятельно изменить значения на что угодно, а потом запустить код и размеры станут в нужных строках этой машины.

Отправлено: 13:47, 10-01-2019 | #19


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


добавление параметра мод с определённым значением так чтобы добавление происходило только если данного значения нет

Код: Выделить весь код
@Echo Off
cls
	Set "FileIni=Z:\Soft_In\SADXModLoader.ini"
	Set "Key=Mod"
	Set "Add="Во поле" "Perfect Chaos Music Swap" "Люли люли" "sadx-frame-limit" "Берёзонька стояла" "EggCarrierOceanMusic""

	Set /A N=1000
	Set "Pref=A"
	FOR /F "usebackq tokens=1* delims==" %%i IN ("%FileIni%") DO Call :In "%%i" "%%j"

	Set /A N=1000
	FOR %%i IN (%Add%) DO Set /A N+=1 &Call Set "Z@@%%N%%=%%~i"

	FOR /F "usebackq tokens=3 delims==" %%i IN (`Set "B@@"`) DO (
		FOR /F "usebackq tokens=1,2 delims==" %%a IN (`Set "Z@@"`) DO If /I "%%~i"=="%%~b" Set "%%~a="
	)

	Set /A N=9000
	FOR /F "usebackq tokens=1,2 delims==" %%a IN (`Set "Z@@"`) DO Set /A N+=1 &Call Set "B@@%%N%%=%Key%99=%%~b"

	Move /Y "%FileIni%" "%FileIni%.bak" >nul

	Set /A N=0
	>"%FileIni%" (
	FOR /F "usebackq tokens=1* delims==" %%i IN (`Set "A@@"`) DO Echo %%j
	FOR /F "usebackq tokens=3 delims==" %%i IN (`Set "B@@"`) DO Set /A N+=1 &Call Echo %Key%%%N%%=%%i
	FOR /F "usebackq tokens=1* delims==" %%i IN (`Set "C@@"`) DO Echo %%j
	)
pause
GoTo :Eof

:In
	Set /A N+=1
	Set /A M=0
	Set "InKey=%~1"
	Call Set "InKey=%%InKey:%Key%=%%"
	Set /A M=%InKey% 2>nul
	If %Pref%==B If "%M%"=="0" Set "Pref=C"
	If %1=="%Key%1" Set "Pref=B"
	Set "%Pref%@@%N%=%~1=%~2" 
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:13, 10-01-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Найти текст по маске в файле и вставить найденные значения в ini файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Найти текст в файле и вставить над ним несколько строк Sergey.l Скриптовые языки администрирования Windows 7 28-01-2018 23:06
CMD/BAT - [решено] Найти текст в файле и вставить над ним несколько строк Sergey.l Скриптовые языки администрирования Windows 5 27-12-2017 18:47
CMD/BAT - Найти в подкаталогах файлы по маске и вывести в текст список тех, у которых первые 2 surgutfred Скриптовые языки администрирования Windows 2 27-01-2016 19:07
CMD/BAT - Найти строку в файле по маске bulchonok Программирование и базы данных 8 25-04-2013 01:50
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла Nun-Nun Скриптовые языки администрирования Windows 1 08-03-2011 15:25




 
Переход