Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 12.08.2020
Сообщений: 14

Замена строк в ini командами CMD

13.08.2020, 11:14. Показов 4467. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!
Сделал флешку с программами использую minstall, с помощью Ketarin научился обновлять их, в ней же научился разархивировать в нужную мне папку каждую программу, так вот. Хотел бы вашей помощи попросить с изменением строк в ini файле.
Есть папка с программой
Code
1
H:\MInstAll\software\Air.Live.Drive\Air.Live.Drive.v1.4.1.exe
есть ini файл со строкой
Code
1
Patch={Patch}\software\air.live.drive\Air.Live.Drive.v1.4.1.exe
так же есть строка
Code
1
Ver=1.4.1.0
Предположим обновилась программа до версии v1.4.2, получается в ini файле надо заменить путь до exe
Code
1
Patch={Patch}\software\air.live.drive\Air.Live.Drive.v1.4.2.exe
и заменить версию в ini файле на
Code
1
Ver=1.4.2.0
Вот такая идея, а как реализовать я без Вас парни ну ни как! Пожалуйста помогите, и сильно не ругайтесь)
P.S а если вдруг изменится буква диска, каким образом можно избежать этого?
P.S.S и каким образом можно удалить предыдущий файл? в ketarin есть возможность запуска команда до обновления и после обновления.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2020, 11:14
Ответы с готовыми решениями:

Работа с командами cmd в java
Здравствуйте, вызываю с помощью приведенного ниже кода команду, все работает, но после выполнения команды окно cmd закрывается, собственно...

Можно ли командами cmd имитировать нажатие правой кнопки мыши?
Доброго времени суток! Может кто подсказать, можно ли через cmd имитировать нажатие правой кнопки мыши?

Удаление\скрытие строк с путями\командами в командной строке
День добрый. Давно меня мучает данный вопрос, но всё никак не находил ответа на него. Реально ли скрыть вторую строку с запросом? Я вот про...

37
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
29.05.2021, 10:08
Студворк — интернет-сервис помощи студентам
Всем привет, уважаемые профи !
Очень долго сижу над решением и никак не могу найти правильное.
Прошу вашей помощи с изменением строк в ini файле, так как сам не смог разобраться со своей проблемой.
В одной и той же папке на компьютере будут находиться два файла start.bat и testpro.ini
Файл testpro.ini выглядит так:
Кликните здесь для просмотра всего текста
[Info]
Другие строки
File=C:\Temp\Test Pro\TestPro.exe
Другие строки
[Options]
Другие строки
AutoBackupPath=C:\Temp\Test Pro\Backup
Другие строки
[Options\Preferences\Calendar]
Другие строки
SoundFile=C:\Temp\Test Pro\calendar.wav
Другие строки
[Options\Preferences\Tasks]
Другие строки
SoundFile=C:\Temp\Test Pro\tasks.wav
Другие строки
[Options\Preferences\Contacts]
Другие строки
SoundFile=C:\Temp\Test Pro\contacts.wav
Другие строки
[Options\Preferences\Events]
Другие строки
SoundFile=C:\Temp\Test Pro\events.wav
Другие строки
[MainForm]
Другие строки
[MainForm\Calendar]
Другие строки
[MainForm\Tasks]
Другие строки
[MainForm\Contacts]
Другие строки
[MainForm\Events]
Другие строки
[Databases]
Database0=Protocol=Local*Database=C:\Tem p\Test Pro\Database\TestPro.db
Database1=Protocol=Local*Database=D:\Tes t Pro\Database\TestPro.db
DefaultDatabase=Database1
Другие строки

Нужен батник (скрипт), который пропишет в файле testpro.ini:
1) в секции [Info] в строке File=C:\Temp\Test Pro\TestPro.exe следующее: File=????????\TestPro.exe (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
2) в секции [Options] в строке AutoBackupPath=C:\Temp\Test Pro\Backup следующее: AutoBackupPath=????????\Backup (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
3) в секции [Options\Preferences\Calendar] в строке SoundFile=C:\Temp\Test Pro\calendar.wav следующее: SoundFile=????????\calendar.wav (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
4) в секции [Options\Preferences\Tasks] в строке SoundFile=C:\Temp\Test Pro\tasks.wav следующее: SoundFile=????????\tasks.wav (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
5) в секции [Options\Preferences\Contacts] в строке SoundFile=C:\Temp\Test Pro\contacts.wav следующее: SoundFile=????????\contacts.wav (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
6) в секции [Options\Preferences\Events] в строке SoundFile=C:\Temp\Test Pro\events.wav следующее: SoundFile=????????\events.wav (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник);
7) в секции [Databases]:
в строке Database0=Protocol=Local*Database=C:\Tem p\Test Pro\Database\TestPro.db следующее: Database0=Protocol=Local*Database=?????? ??\Database\TestPro.db (в данном варианте на нужном месте размещены знаки вопроса, вместо которых должен быть записан путь папки, в которой расположен сам запускаемый батник)
в строке Database1=Protocol=Local*Database=D:\Tes t Pro\Database\TestPro.db следующее: Database1=Protocol=Local*Database=?????? ?? (в данном варианте на нужном месте размещены знаки вопроса, вместо которых НЕ ДОЛЖНО БЫТЬ НИЧЕГО!!!)
в строке DefaultDatabase=Database1 следующее: DefaultDatabase=Database0.
При этом содержимое остальных секций и строк не нарушалось !
Пожалуйста, помогите реализовать задуманное, не прибегая к сторонним утилитам, все только в одном bat-файле.
Заранее благодарен всем откликнувшимся за помощь !
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.05.2021, 13:37
Win-Henker, добрый день! На чистом cmd Вы это не реализуете. С использованием допутилиты:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set "folder=%~dp0"
set "folder=%folder:\=\\%"
sed -i "/[Info]/,/[Options]/s/File=C:\\Temp\\Test Pro\\TestPro\.exe/File=%folder%TestPro\.exe/" testpro.ini
sed -i "/[Options]/,/[Options\\Preferences\\Calendar]/s/AutoBackupPath=C:\\Temp\\Test Pro\\Backup/AutoBackupPath=%folder%Backup/" testpro.ini
sed -i "/[Options\\Preferences\\Calendar]/,/[Options\\Preferences\\Tasks]]/s/SoundFile=C:\\Temp\\Test Pro\\calendar.wav/SoundFile=%folder%calendar.wav/" testpro.ini
sed -i "/[Options\\Preferences\\Tasks]/,/[Options\\Preferences\\Contacts]]/s/SoundFile=C:\\Temp\\Test Pro\\tasks.wav/SoundFile=%folder%tasks.wav/" testpro.ini
sed -i "/[Options\\Preferences\\Contacts]/,/[Options\\Preferences\\Events]]/s/SoundFile=C:\\Temp\\Test Pro\\contacts.wav/SoundFile=%folder%contacts.wav/" testpro.ini
sed -i "/[Options\\Preferences\\Events]/,/[MainForm]]/s/SoundFile=C:\\Temp\\Test Pro\\events.wav/SoundFile=%folder%events.wav/" testpro.ini
sed -i "/[Databases]/,$ s/Database0=Protocol=Local\*Database=C:\\Temp\\Test Pro\\Database\\TestPro.db/Database0=Protocol=Local\*Database=%folder%TestPro.db/" testpro.ini
sed -i "/[Databases]/,$ s/Database1=Protocol=Local\*Database=D:\\Test Pro\\Database\\TestPro.db/Database1=Protocol=Local\*Database=/" testpro.ini
sed -i "/[Databases]/,$ s/DefaultDatabase=Database1/DefaultDatabase=Database0/" testpro.ini
Примечание.
Для работы скрипта нужна утилита sed (во вложении). Рекомендую закинуть в C:\windows\system32
Вложения
Тип файла: rar sed.rar (182.7 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
29.05.2021, 15:03
Karen87, приветствую ! Спасибо за решение ! Запускаться будет с USB-флеш на разных компьютерах, в таком случае допутилиту sed всегда нужно будет носить с собой, что крайне не удобно.
Сам пытаюсь строки:

[Options\Preferences\Calendar]
SoundFile=C:\Temp\Test Pro\calendar.wav
[Options\Preferences\Tasks]
SoundFile=C:\Temp\Test Pro\tasks.wav
[Options\Preferences\Contacts]
SoundFile=C:\Temp\Test Pro\contacts.wav
[Options\Preferences\Events]
SoundFile=C:\Temp\Test Pro\events.wav

реализовать следующим сценарием скрипта:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@echo off
chcp 1251
 
if "%~dp0"=="" echo you need to specify the name & goto :EOF
 
:: file containing string to replace
set file=testpro.ini
:: string to replace in file (does NOT need to be the whole line)
set searchString=calendar.wav
:: string to write to file (DOES need to be the whole line)
set repString=SoundFile=%~dp0calendar.wav
 
setLocal enableDelayedExpansion
set count=0
 
if not exist %file% echo cannot find file - %file% & goto :EOF
 
:: Search for string - and get it's line number
for /F "delims=:" %%a in ('findstr /N /I /C:"%searchString%" "%file%"') do set searchLine=%%a
 
if not defined searchLine echo cannot find string - %searchString% - in file - %file% & goto :EOF
 
:: Read file into variables - by line number
for /F "delims=~!" %%b in ('type %file%') do (
    set /a count=!count!+1
    set line!count!=%%b
)
 
:: Edit the one line
set line%searchLine%=%repString%
 
:: Empty file and write new contents
del %file%
for /L %%c in (1,1,!count!) do echo !line%%c!>>%file%
 
pause
EndLocal
Exit /B
 
 
pause
@Exit
Но после его использования на выходе первый путь обрабатывается, а остальные удаляются. На выходе, если запускать с USB-флеш, получается:

[Options\Preferences\Calendar]
SoundFile=SoundFile=I:\Rabota\Test Pro\calendar.wav
[Options\Preferences\Tasks]
SoundFile=C:\
[Options\Preferences\Contacts]
SoundFile=C:\
[Options\Preferences\Events]
SoundFile=C:\

Не могу указанный выше сценарий доработать, чтобы его повторно применить для повторяющегося параметра SoundFile в других секциях: [Options\Preferences\Tasks], [Options\Preferences\Contacts], [Options\Preferences\Events].
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.05.2021, 15:11
Win-Henker, в чём сложность закинуть маленькую утилиту на флешку и носить с собой?
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
29.05.2021, 15:33
Уважаемый Karen87, да сложностей в общем нет, лишь только «спортивный интерес».
К тому же, используя Ваше предложение, анализирую, что после первого запуска start.bat, пути в testpro.ini изменятся, и исходными, как изначально "C:\\Temp\\Test Pro" – не будут.
Как в таком случае применять Ваш Код для дальнейших запусков на других машинах?
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
29.05.2021, 15:34
Цитата Сообщение от Win-Henker Посмотреть сообщение
не прибегая к сторонним утилитам
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
cls
function Main
{
    param(
        $file = 'testpro.ini'
    )
 
    $ini = Get-IniContent $file
    
    $ini.Info.File = "$PSScriptRoot\TestPro.exe"
    $ini.Options.AutoBackupPath = "$PSScriptRoot\Backup"
    $ini.'Options\Preferences\Calendar'.SoundFile = "$PSScriptRoot\calendar.wav"
    $ini.'Options\Preferences\Tasks'.SoundFile = "$PSScriptRoot\task.wav"
    $ini.'Options\Preferences\Contacts'.SoundFile = "$PSScriptRoot\Contacts.wav"
    $ini.'Options\Preferences\Events'.SoundFile = "$PSScriptRoot\Events.wav"
    $ini.Databases.Database0 = "Protocol=Local*Database=$PSScriptRoot\Database\TestPro. db"
    $ini.Databases.Database1 = 'Protocol=Local*Database='
    $ini.Databases.DefaultDatabase = 'Database0'
 
    Out-IniFile $ini $file
}
 function Get-IniContent ($filePath){
    $ini = @{}
    switch -regex -file $FilePath{
        '^\[(.+)\]' # Section
        {
            $section = $matches[1]
            $ini[$section] = @{}
            $CommentCount = 0
        }
        '^(;.*)$' # Comment
        {
            $value = $matches[1]
            $CommentCount = $CommentCount + 1
            $name = "Comment" + $CommentCount
            $ini[$section][$name] = $value
        }
        '(.+?)\s*=(.*)' # Key
        {
            $name,$value = $matches[1..2]
            $ini[$section][$name] = $value
        }
    }
    return $ini
}
function Out-IniFile($InputObject, $FilePath){
    $outFile = New-Item -ItemType file -Path $Filepath -Force
    foreach ($i in $InputObject.keys){
        if (!($($InputObject[$i].GetType().Name) -eq "Hashtable")){
            #No Sections
            Add-Content -Path $outFile -Value "$i=$($InputObject[$i])"
        }
        else{
            #Sections
            Add-Content -Path $outFile -Value "[$i]"
            Foreach ($j in ($InputObject[$i].keys | Sort-Object)){
                if ($j -match "^Comment[\d]+") {
                    Add-Content -Path $outFile -Value "$($InputObject[$i][$j])"
                }
                else {
                    Add-Content -Path $outFile -Value "$j=$($InputObject[$i][$j])"
                }
            }
            Add-Content -Path $outFile -Value ""
        }
    }
} 
main
Замены в ini-файле по указанным вами шагам происходят в строках 10 - 18.
Вы можете сами вносить туда изменения на ваше усмотрение, если в будущем понадобится что-то поправить.
1
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.05.2021, 15:37
Win-Henker, для начала неплохо бы было полностью озвучить ТЗ. Скрипт отработает и изменит пути и конечно во второй раз на изменённом файле уже не отработает. Истолкуйте полностью хотелку и тогда будет понятно как нормально её решить
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
29.05.2021, 17:14
Karen87, постараюсь учесть Ваши ремарки в будущем. Спасибо !

Добавлено через 21 минуту
Fors1k, добрый день ! Спасибо Вам за Ваш подход к этому нелёгкому делу !
Но я никак не могу протестировать Ваш замечательный код.
В папке, как я указывал в ТЗ, два файла: Start.bat (в который я вставил Ваш код) и testpro.ini. После запуска Start.bat в файле testpro.ini изменения не наблюдаются.
В начало кода вставил следующие строки:

@echo off
powershell -ExecutionPolicy ByPass -command "Код"

pause

Прошу Вас не гневаться, возможно, что-то делаю не так… Спасибо за понимание !

Добавлено через 4 минуты
Цель и очень большое желание и интерес всё прописать в одном батнике !
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.05.2021, 17:21
Win-Henker, да не за что. Скрипт в виде чистого батника без допутилит с использованием powershell:
Windows Batch file
1
2
@set "folder=%~dp0"
@powershell -executionpolicy bypass -command "$global:new=@(); $a=Get-Content '.\testpro.ini'; function Processing ($start, $end, $string_old, $string_new) {$global:new+=$a[$($start-1)..$($end-1)] -replace """$string_old""", """$string_new"""}; $start=($a | Select-String -pattern '^\[Info\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\]$').LineNumber; $string_old='File=[A-Za-z]:\\.+\\TestPro\.exe'; $string_new="""File=%folder%TestPro.exe"""; Processing $start $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Calendar\]$').LineNumber; $string_old='AutoBackupPath=[A-Za-z]:\\.+\\Backup'; $string_new="""AutoBackupPath=%folder%Backup"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Calendar\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Tasks\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\calendar\.wav'; $string_new="""SoundFile=%folder%calendar.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Tasks\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Contacts\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\tasks\.wav'; $string_new="""SoundFile=%folder%tasks.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Contacts\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Events\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\contacts\.wav'; $string_new="""SoundFile=%folder%contacts.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Events\]$').LineNumber; $end=($a | Select-String -pattern '^\[MainForm\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\events\.wav'; $string_new="""SoundFile=%folder%events.wav"""; Processing $($start+1) $end $string_old $string_new; $start=$end+1; $end=$a.Count; $global:new+=$a[$($start-1)..$($end-1)] -replace 'Database0=Protocol=Local\*Database=[A-Za-z]:\\.+\\Database\\TestPro\.db', """Database0=Protocol=Local*Database=%folder%Database\TestPro.db""" -replace 'Database1=Protocol=Local\*Database=D:\\Test Pro\\Database\\TestPro\.db', 'Database1=Protocol=Local*Database=' -replace 'DefaultDatabase=Database1', 'DefaultDatabase=Database0'; $new | Out-File '.\testpro.ini'"
1
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
29.05.2021, 17:45
Цитата Сообщение от Win-Henker Посмотреть сообщение
Спасибо Вам за Ваш подход к этому нелёгкому делу !
В папке, как я указывал в ТЗ, два файла: Start.bat (в который я вставил Ваш код) и testpro.ini
Пожалуйста.
Так и будет два файла, толька расширение поправьте: Start.ps1 и testpro.ini .
Скопируйте код в Start.ps1, и все готово.
Запускайте нажатием правой кнопки -> Выполнить в powershell.

Кстати, вам нужно сохранять изменения в тот же ini-файл, или создавать рядом новый?
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
29.05.2021, 20:01
Уважаемый Fors1k, изменения нужно сохранять в тот же ini-файл.
А почему именно через BAT-файл?! После хотелось бы закодировать его в EXE

Добавлено через 1 час 56 минут
Уважаемый Karen87, Вы неподражаемы !
Восхищён Вашим талантом, очень грамотное и отличное решение !
Всё работает ! Ваш код с задачей справился на 100% !
Огромное СПАСИБО Вам за помощь !

У меня осталось только два вопроса:
1) Есть ли какое-нибудь объяснение тому, почему после запуска Вашего скрипта и изменения ini файла его размер (вес) увеличивается в два раза по сравнению с первоначальным вариантом (к примеру был 8 Kb, становится 16 Kb), при этом количество всех строк в нём остается одинаковым и неизменным, а отличаются только значения строк, которые были изменены ???
2) Если BAT-файл запускать не из той папки, где находится сам файл ini (testpro.ini), а к примеру из каталога "%folder%Database\Start.bat", тогда чтобы Ваш потрясающий код работал, достаточно ли будет изменить только первую его часть, то есть @set "folder=%~dp0.." ???
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
29.05.2021, 20:09
Цитата Сообщение от Win-Henker Посмотреть сообщение
А почему именно через BAT-файл?!
Не через .bat, а через .ps1.
Через ps1 потому, что Microsoft закрыл работу над cmd/bat 21 год назад, и он ничего не умеет.
А powershell умеет все, безо всяких дополнительных программок.

Кстати, ps1 как раз можно завернуть в exe.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.05.2021, 20:11
Цитата Сообщение от Win-Henker Посмотреть сообщение
Уважаемый Karen87, Вы неподражаемы !
Восхищён Вашим талантом, очень грамотное и отличное решение !
Всё работает ! Ваш код с задачей справился на 100% !
Огромное СПАСИБО Вам за помощь !
Спасибо за добрые слова, а за помощь не за что
Цитата Сообщение от Win-Henker Посмотреть сообщение
1) Есть ли какое-нибудь объяснение тому, почему после запуска Вашего скрипта и изменения ini файла его размер (вес) увеличивается в два раза по сравнению с первоначальным вариантом (к примеру был 8 Kb, становится 16 Kb), при этом количество всех строк в нём остается одинаковым и неизменным, а отличаются только значения строк, которые были изменены ???
Какая кодировка у исходного файла? UTF8?
Цитата Сообщение от Win-Henker Посмотреть сообщение
2) Если BAT-файл запускать не из той папки, где находится сам файл ini (testpro.ini), а к примеру из каталога "%folder%Database\Start.bat", тогда чтобы Ваш потрясающий код работал, достаточно ли будет изменить только первую его часть, то есть @set "folder=%~dp0.." ???
Нет. Первую строчку менять не нужно в этом случае, но нужно поменять путь к файлу testpro.ini
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
31.05.2021, 20:43
У исходного файла кодировка Windows-1251

Добавлено через 3 минуты
А кодировка измененного файла – UCS-2 LE BOM
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
31.05.2021, 20:59
Win-Henker, попробуйте так:
Windows Batch file
1
2
@set "folder=%~dp0"
@powershell -executionpolicy bypass -command "$global:new=@(); $a=Get-Content '.\testpro.ini'; function Processing ($start, $end, $string_old, $string_new) {$global:new+=$a[$($start-1)..$($end-1)] -replace """$string_old""", """$string_new"""}; $start=($a | Select-String -pattern '^\[Info\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\]$').LineNumber; $string_old='File=[A-Za-z]:\\.+\\TestPro\.exe'; $string_new="""File=%folder%TestPro.exe"""; Processing $start $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Calendar\]$').LineNumber; $string_old='AutoBackupPath=[A-Za-z]:\\.+\\Backup'; $string_new="""AutoBackupPath=%folder%Backup"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Calendar\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Tasks\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\calendar\.wav'; $string_new="""SoundFile=%folder%calendar.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Tasks\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Contacts\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\tasks\.wav'; $string_new="""SoundFile=%folder%tasks.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Contacts\]$').LineNumber; $end=($a | Select-String -pattern '^\[Options\\Preferences\\Events\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\contacts\.wav'; $string_new="""SoundFile=%folder%contacts.wav"""; Processing $($start+1) $end $string_old $string_new; $start=($a | Select-String -pattern '^\[Options\\Preferences\\Events\]$').LineNumber; $end=($a | Select-String -pattern '^\[MainForm\]$').LineNumber; $string_old='SoundFile=[A-Za-z]:\\.+\\events\.wav'; $string_new="""SoundFile=%folder%events.wav"""; Processing $($start+1) $end $string_old $string_new; $start=$end+1; $end=$a.Count; $global:new+=$a[$($start-1)..$($end-1)] -replace 'Database0=Protocol=Local\*Database=[A-Za-z]:\\.+\\Database\\TestPro\.db', """Database0=Protocol=Local*Database=%folder%Database\TestPro.db""" -replace 'Database1=Protocol=Local\*Database=D:\\Test Pro\\Database\\TestPro\.db', 'Database1=Protocol=Local*Database=' -replace 'DefaultDatabase=Database1', 'DefaultDatabase=Database0'; $new | Out-File '.\testpro.ini' -encoding default"
1
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
31.05.2021, 21:58
Karen87, СПАСИБО Вам, кодировка остается неизменной, всё работает! Супер!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
31.05.2021, 22:10
Win-Henker, да не за что
0
0 / 0 / 0
Регистрация: 25.05.2021
Сообщений: 8
31.05.2021, 22:11
Уважаемые профессионалы своего дела, СПАСИБО ВСЕМ за помощь и за желание помочь, за то, что Вы ЕСТЬ !!! И не проходите мимо !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2021, 22:11

Замена размера монитора, файле ini
есть строкав файле ini с разрешением экрана, называется sizecreen_mode По умолчанию у всех там стоит свой размер экрана. У меня там...

Создание файла INI из файла cmd/bat итд
Доброго времени суток. Есть задача - Создать файл с указанием параметра Х Есть пусть к файлу...

Поиск замена в ftpconfig.ini и рестарт службы
Всем доброго времени суток! Возникла проблемма следующего характера: На некотором кол-ве устройчтв, запущенна служб FTP, которая...

Замена целой строки в ini файле настроек
здравствуйте, нужно редактировать ini файл. есть параметр "Pause150zvonkov=653" это 206 строчка. нужно редактировать значение например...

Замена cmd.exe
Не уверен, куда стоит написать, но так как реализация ожидается на кьют, напишу сюда. Дело в чём: я хочу написать собтсвенную консоль, так...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru