Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Добавление нумерации

Аватара для minutka15

Пользователь


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

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


Есть ini файл такого содержания:

[count]
1=любая текстовая строка
2=любая текстовая строка
3=любая текстовая строка
4=любая текстовая строка
и т.д

После обработки файла нужен такой результат:

[count]
1=1
2=2
3=3
4=4
и т.д

Можно ли получить такой результат коротким батником?

-------
We don't call 911


Отправлено: 21:41, 14-01-2023

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$text = "C:\temp\list.txt"
$delim = '='
$result = "C:\temp\list2.txt"

$list = (Get-Content $text) -notmatch '^\[' |% {
    $str = $_ -split $delim
    $str[0] + $delim + $str[0]
}

$list > $result

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 10:21, 15-01-2023 | #2



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

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


Аватара для minutka15

Пользователь


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

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


DJ Mogarych,
Цитата DJ Mogarych:
$text = "C:\temp\list.txt"
$delim = '='
$result = "C:\temp\list2.txt"
$list = (Get-Content $text) -notmatch '^\[' |% {
$str = $_ -split $delim
$str[0] + $delim + $str[0]
}
$list > $result »
Спасибо за помощь!
Но код у меня не работает, ничего не происходит..

-------
We don't call 911


Отправлено: 15:13, 15-01-2023 | #3


Ветеран


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

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


Код: Выделить весь код
(Get-Content file.ini) -replace '(.+)=.+', '$1=$1' | Set-Content file.ini
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 15-01-2023 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Лаконично и красиво, но если в строке несколько =, то работать не будет.
Код: Выделить весь код
[count]
1=любая текст=1=любая текст
2=люб=аer[ojt'peoh93h=2=люб=аer[ojt'peoh93h
3=3
4=4
8=8
Уточнённый вариант, вроде работает
Код: Выделить весь код
$file = "C:\temp\list.txt"
(Get-Content $file) -replace '^(.+?)=.+', '$1=$1' |Set-Content $file

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 17:38, 15-01-2023 | #5


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
>nul chcp 1251
	Set "FileIn=Z:\Box_In\Есть ini файл такого содержания.ini"

    >"%FileIn%.~tmp" (FOR /F "usebackq tokens=1* delims==" %%i In (`2^>nul More "%FileIn%"`) DO (
		If "%%j"=="" (Echo %%i) Else (Echo %%i=%%i)
	))
	>nul Move /Y "%FileIn%.~tmp" "%FileIn%"
pause
Exit /B 0

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

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

Отправлено: 17:44, 15-01-2023 | #6


Аватара для minutka15

Пользователь


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

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


Спасибо всем за помощь!

DJ Mogarych,
Запускаю из одной папки где и сам ini файл прописав $file = "1.ini"
но к сожалению ничего не происходит ...

Foreigner,
(Get-Content 1.ini) -replace '(.+)=.+', '$1=$1' | Set-Content 1.ini
То-же самое...

megaloman,
Ваш скрипт мгновенно решает проблему, Запустил и точка!
Как раз нужен был именно батник.
Спасибо огромное!!!

-------
We don't call 911


Отправлено: 20:01, 15-01-2023 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Прописали бы полный путь, вопросов бы не было.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:21, 15-01-2023 | #8


Аватара для minutka15

Пользователь


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

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


Цитата DJ Mogarych:
Прописали бы полный путь, вопросов бы не было. »
Ну прописать можно как угодно, powershell видит так-же и путь в своей директории...
В ранних скриптах я так же и клал в одну директорию и все работало.

Ну вот прописал и скриншот с результатом:
Скрытый текст


А тут скрипт от megaloman, скриншот с результатом:
Скрытый текст

-------
We don't call 911


Отправлено: 20:53, 15-01-2023 | #9


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата DJ Mogarych:
Уточнённый вариант »
минуточку-минуточку... простите за каламбур...
Сейчас ведь выяснится, что менять надо было не во всем файле, а в определенной секции(ях)... а там, может ещё какие подробности вылезут... поэтому:
Я бы порекомендовал для случая с powershell, не изобретать наших велосипедов, а воспользоваться уже готовым решением:
Код: Выделить весь код
install-module psini
на запрос дать разрешение установки... (можно, конечно, из модуля повыдергивать функции и использовать их в скрипте, но так проще, да и практичнее).
после чего уже производить с файлом конфигурации необходимые манипуляции...
например, для случая, обозначенного ТС-ом в первом сообщении, строго по условиям:
Код: Выделить весь код
$fin_ini = '.\conf.ini'
$fout_ini = '.\out.ini'
$sec = 'count' # имя секции

$fini = gic $fin_ini -ign

for ($i = 0;$i -lt $fini[$sec].count;$i++){
    #$fini[$sec][$i] = $fini[$sec].keys[$i]
    # .split("`n") - для PS 5.1, почему-то коллекции работают некорректно
    # $fini.$sec[$i] = $fini.$sec.keys.split("`n")[$i] # строка работала неверно, закомментирована...
    $fini.$sec[$i] = ($fini.$sec|%{$_.keys})[$i] # эта строка работает более корректно.
}

oif -inp $fini -file $fout_ini -force

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 22-06-2023 в 10:32. Причина: корректировка кода


Отправлено: 22:11, 15-01-2023 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] добавление не достающих ссылок следуя нумерации Alexander_88 Скриптовые языки администрирования Windows 11 06-11-2021 02:06
Переназначение нумерации мониторов Flethgin Видеокарты 0 15-06-2016 18:42
2010 - Макрос нумерации формул в Word Starter1 Microsoft Office (Word, Excel, Outlook и т.д.) 6 27-04-2013 23:01
OpenOffice Writer, Проблемы с выводом нумерации страниц. steppe Программное обеспечение Linux и FreeBSD 1 03-04-2013 13:18
PowerShell - Вывод нумерации элементов массива в консоль tarasov.evgeny Скриптовые языки администрирования Windows 0 12-04-2011 13:36




 
Переход