CMD/BAT - [решено] Добавление нумерации
-
minutka15
CMD/BAT - [решено] Добавление нумерации
Есть ini файл такого содержания:
[count]
1=любая текстовая строка
2=любая текстовая строка
3=любая текстовая строка
4=любая текстовая строка
и т.д
После обработки файла нужен такой результат:
[count]
1=1
2=2
3=3
4=4
и т.д
Можно ли получить такой результат коротким батником?
[count]
1=любая текстовая строка
2=любая текстовая строка
3=любая текстовая строка
4=любая текстовая строка
и т.д
После обработки файла нужен такой результат:
[count]
1=1
2=2
3=3
4=4
и т.д
Можно ли получить такой результат коротким батником?
-
DJ Mogarych
Re: CMD/BAT - [решено] Добавление нумерации
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-
minutka15
Re: CMD/BAT - [решено] Добавление нумерации
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
Спасибо за помощь!
Но код у меня не работает, ничего не происходит..
Цитата 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
CMD/BAT - [решено] Добавление нумерации
Спасибо за помощь!
Но код у меня не работает, ничего не происходит..
-
Foreigner
Re: CMD/BAT - [решено] Добавление нумерации
Код:
Код: Выделить всё
(Get-Content file.ini) -replace '(.+)=.+', '$1=$1' | Set-Content file.ini-
DJ Mogarych
Re: CMD/BAT - [решено] Добавление нумерации
Лаконично и красиво, но если в строке несколько =, то работать не будет.
Код:
Уточнённый вариант, вроде работает
Код:
Код:
Код: Выделить всё
[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-
megaloman
Re: CMD/BAT - [решено] Добавление нумерации
Код:
Код: Выделить всё
@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-
minutka15
Re: CMD/BAT - [решено] Добавление нумерации
Спасибо всем за помощь!
DJ Mogarych,
Запускаю из одной папки где и сам ini файл прописав $file = "1.ini"
но к сожалению ничего не происходит ...
Foreigner,
(Get-Content 1.ini) -replace '(.+)=.+', '$1=$1' | Set-Content 1.ini
То-же самое...
megaloman,
Ваш скрипт мгновенно решает проблему, Запустил и точка!
Как раз нужен был именно батник.
Спасибо огромное!!!
DJ Mogarych,
Запускаю из одной папки где и сам ini файл прописав $file = "1.ini"
но к сожалению ничего не происходит ...
Foreigner,
(Get-Content 1.ini) -replace '(.+)=.+', '$1=$1' | Set-Content 1.ini
То-же самое...
megaloman,
Ваш скрипт мгновенно решает проблему, Запустил и точка!
Как раз нужен был именно батник.
Спасибо огромное!!!
-
DJ Mogarych
-
minutka15
Re: CMD/BAT - [решено] Добавление нумерации
Цитата DJ Mogarych:
Прописали бы полный путь, вопросов бы не было.
Ну прописать можно как угодно, powershell видит так-же и путь в своей директории...
В ранних скриптах я так же и клал в одну директорию и все работало.
Ну вот прописал и скриншот с результатом:
Скрытый текст
[spoiler][/spoiler]
А тут скрипт от megaloman, скриншот с результатом:
Скрытый текст
[spoiler][/spoiler]
Прописали бы полный путь, вопросов бы не было.
CMD/BAT - [решено] Добавление нумерации
Ну прописать можно как угодно, powershell видит так-же и путь в своей директории...
В ранних скриптах я так же и клал в одну директорию и все работало.
Ну вот прописал и скриншот с результатом:
Скрытый текст
[spoiler][/spoiler]
А тут скрипт от megaloman, скриншот с результатом:
Скрытый текст
[spoiler][/spoiler]
-
YuS_2
Re: CMD/BAT - [решено] Добавление нумерации
Цитата DJ Mogarych:
Уточнённый вариант
минуточку-минуточку... простите за каламбур...
Сейчас ведь выяснится, что менять надо было не во всем файле, а в определенной секции(ях)... а там, может ещё какие подробности вылезут... поэтому:
Я бы порекомендовал для случая с powershell, не изобретать наших велосипедов, а воспользоваться уже готовым решением:
Код:
на запрос дать разрешение установки... (можно, конечно, из модуля повыдергивать функции и использовать их в скрипте, но так проще, да и практичнее).
после чего уже производить с файлом конфигурации необходимые манипуляции...
например, для случая, обозначенного ТС-ом в первом сообщении, строго по условиям:
Код:
Уточнённый вариант
CMD/BAT - [решено] Добавление нумерации
минуточку-минуточку... простите за каламбур...

Сейчас ведь выяснится, что менять надо было не во всем файле, а в определенной секции(ях)... а там, может ещё какие подробности вылезут... поэтому:
Я бы порекомендовал для случая с 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