Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185

Замена данных в файле из переменных

04.02.2020, 12:04. Показов 5652. Ответов 22

Студворк — интернет-сервис помощи студентам
Доброго времени суток, давненько не обращался за небольшой помощью , но столкнулся с небольшой проблемкой ,
по факту забывчивости

Код ниже , на выходе получаю значения, необходимо в файле эталонные значения изменить на полученные

И вопрос №2, Возможно ли как-то мой etalon.txt - запихнуть в сам код т.е , что-бы генерация конфига происходила без дополннительного файла?

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
#Часть конечного кода
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    $x1 = $textBox2.Text
    $x2 = $textBox3.Text
    $x3 = $textBox4.Text
}
elseif ($result -eq [System.Windows.Forms.DialogResult]::Cancel)
{
    Write-Host "иди отсюдого !"
    exit
}
 
#Write-Host $x   ---получил данные Vasya25
#Write-Host $x1  ---получил данные 4788
#Write-Host $x2  ---получил данные 800506806
#Write-Host $x3  ---получил данные 192.168.1
 
# В etalon.txt  нужно заменить данные  
# kpas = $x vnomer= $1 vkiev= $x2 adresses= $x3
 
$string = $x, $x1, $x2, $x3
$etalon_txt_new = Get-Content .\etalon.txt
 
    foreach ($var in ($string | Get-Member -MemberType NoteProperty).Name)
    
 
    {
        $etalon_txt_new = $etalon_txt_new -replace $var,$string.$var
    }
    $etalon_txt_new | Set-Content "sip-$($string.x).txt"
да я вижу что на выходе получаю только значения, а до обращения к файлу я не пойму как их корректно обозначить данными для замены..
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2020, 12:04
Ответы с готовыми решениями:

Замена данных в RTF файле?
Здравствуйте форумчане! Написал программу в Visual Studio 2010 которая читает текстовый файл, выбирает из него определенные данные и...

Замена данных в текстовом файле
помогите пожалуйста можно ли менять текст в .txt в с++ builder

Замена данных в бинарном файле
Имеется файл размером несколько гигабайт, необходимо заменить у него кусок 4194304б из середины. Известен номер байта с которого надо...

22
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 12:20
PowerShell
1
2
3
4
5
6
7
8
9
10
11
[string]$etalon_txt_new = 'Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи ещё хоть четверть века —
Всё будет так. Исхода нет.
 
Умрёшь — начнёшь опять сначала
И повторится всё, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.'
 
write-host $etalon_txt_new
Добавлено через 2 минуты
Одинарная кавычка экранируется ей же
PowerShell
1
write-host '''a'''
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
04.02.2020, 12:55  [ТС]
Цитата Сообщение от alhaos Посмотреть сообщение
[string]$etalon_txt_new = 'Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
оо , за подсказку .по тексту спасибо, только я не до конца понял , как тогда мне произвести в нем замену необходимых параметров

PowerShell
1
2
3
4
5
6
7
8
$string = $x, $x1, $x2, $x3
[string]$etalon_txt_new='<<VOIP CONFIG FILE>>Version:2.0002                            
 
<GLOBAL CONFIG MODULE>
WAN Mode           :STATIC
WAN IP             :adresses.100
WAN Subnet Mask    :255.255.255.0
WAN Gateway        :adresses.253 '
т.е. данные которые у меня щас в переменной $x3 , как подставить вместо adresses
и т.д. с другими значениями
# kpas = $x vnomer= $1 vkiev= $x2 adresses= $x3
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 13:11
я решаю это тегами

PowerShell
1
2
3
4
$template = 'Get-Process -Name #process_name#'
$template = $template -replace "#process_name#", 'notepad'
$block = [Scriptblock]::Create($template)
Invoke-Command $block
0
 Аватар для volodin661
6673 / 2266 / 346
Регистрация: 10.12.2013
Сообщений: 7,832
04.02.2020, 13:15
переменные интерполируются в двойных кавычках. "Петя и ${волк}"
в одинарных кавычках переменные не интерполируются.

Если же двойные кавычки сами входят в текст, то возможно использовать альтернативные двойные кавычки ( юникодные ).
Но тогда текст должен быть в кодировке UTF-8
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 13:32
Цитата Сообщение от magarjoba Посмотреть сообщение
Возможно ли как-то мой etalon.txt - запихнуть в сам код т.е , что-бы генерация конфига происходила без дополннительного файла?
оговорюсь, не считаю это удобным для себя.

Цитата Сообщение от volodin661 Посмотреть сообщение
переменные интерполируются в двойных кавычках. "Петя и ${волк}"
и это кстати тоже.

мой вариант файл шаблона плюс теги
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
04.02.2020, 14:25  [ТС]
Цитата Сообщение от alhaos Посмотреть сообщение
оговорюсь, не считаю это удобным для себя.
Подскажите где можно почитать про решение вопроса по поводу моего варианта,
т.к даже в обычном варианте замены текста , я все равно ничего не понял..

т.е для меня не ясно . в каком порядке я должен что-то делать со значениями. .
Я получил значения , $x, $x1, $x2, $x3 , их как -то нужно объявлять новыми переменными, которые должны соответствовать значениям в файле, или я не так понимаю. ?
заранее извеняюсь ...
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 14:37
https://windowsnotes.ru/powers... -kavychki/

вот хорошая статья если будите использовать метод который предложил volodin661

в варианте предложенным мной используется замена подстроки значением переменной, что читать если это не понятно я не знаю.
0
 Аватар для volodin661
6673 / 2266 / 346
Регистрация: 10.12.2013
Сообщений: 7,832
04.02.2020, 14:42
Лучший ответ Сообщение было отмечено magarjoba как решение

Решение

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function CONFIG {
"
<<VOIP CONFIG FILE>>Version:${version}                            
 
<GLOBAL CONFIG MODULE>
WAN Mode           :STATIC
WAN IP             :${addresses}.100
WAN Subnet Mask    :255.255.255.0
WAN Gateway        :${addresses}.253
"
 
}        
                      
$addresses = '192.168.0'                                
$version   = '2.0002'                                 
                     
                                                   
                           
                                
     
                                            
(CONFIG)
1
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 14:48
volodin661 прикольно

вот так мне больше нравится

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function CONFIG {
param(
    $addresses,
    $version
)
"<<VOIP CONFIG FILE>>Version:$version
 
<GLOBAL CONFIG MODULE>
WAN Mode           :STATIC
WAN IP             :$addresses.100
WAN Subnet Mask    :255.255.255.0
WAN Gateway        :$addresses.253"
}        
                      
CONFIG  '192.168.0' '2.0002'
1
 Аватар для volodin661
6673 / 2266 / 346
Регистрация: 10.12.2013
Сообщений: 7,832
04.02.2020, 18:46
alhaos, при интерполяции фигурные скобки ( ${address} ) в общем случае нужны.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
04.02.2020, 19:04
volodin661, я в ааа м верю, но неплохо бы ссылку на первоисточник.
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
04.02.2020, 19:13  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
function CONFIG {
PowerShell
1
2
3
4
5
6
7
8
9
10
function CONFIG {"<VOIP CONFIG FILE>>
123
321
213
<<END OF FILE>>"}
$kpas=$x
$vnomer=$x1
$vkiev=$x2
$adresses=$x3
CONFIG | Set-Content "sip-Test$x.txt"
Спасибо огромное . и вам и alhaos

Интересно я вот эксперементирую , но не могу понять, это не так важно, но от куда у выходного файла именно в конце
после <<END OF FILE>> есть перенос строки..., я же отступ и перенос скобок подвинул "} ? но перенос присутствует
0
 Аватар для volodin661
6673 / 2266 / 346
Регистрация: 10.12.2013
Сообщений: 7,832
04.02.2020, 20:10
Цитата Сообщение от magarjoba Посмотреть сообщение
но перенос присутствует
с простыми " кавычками от него не избавиться,
нужен HERE-DOCUMENT синтаксис.

вот так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
function CONFIG {
 
@"
<<VOIP CONFIG FILE>>Version:${version}                            
 
<GLOBAL CONFIG MODULE>
WAN Mode           :STATIC
WAN IP             :${addresses}.100
WAN Subnet Mask    :255.255.255.0
WAN Gateway        :${addresses}.253
"@
 
}
Добавлено через 9 минут
Цитата Сообщение от alhaos Посмотреть сообщение
volodin661, я в ааа м верю, но неплохо бы ссылку на первоисточник.
ну, хотя бы из-за такого случая:

PowerShell
1
2
3
4
5
6
7
8
9
10
function CONFIG {
@"
WAN IP             :$address:100
WAN Gateway        :$address:253
"@
}
 
$address = "XA.XA.XA"
 
(CONFIG)
2
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
05.02.2020, 07:43
Цитата Сообщение от volodin661 Посмотреть сообщение
ну, хотя бы из-за такого случая:
Такого?

PowerShell
1
2
3
4
5
6
7
8
9
10
function CONFIG {
@"
WAN IP             :$address`:100
WAN Gateway        :$address`:253
"@
}
 
$address = "XA.XA.XA"
 
(CONFIG)
Добавлено через 2 минуты
я конечно смутно себе представляю как PWSH ведет себя на других платформах и разнообразие методов которыми можно сделать одно и то же конечно благо, но не абсолютное.

Добавлено через 9 минут
Heredoc-синтаксис вещь интересная... возьму на вооружение. Благодарю.

Добавлено через 58 минут
Цитата Сообщение от magarjoba Посмотреть сообщение
Интересно я вот эксперементирую , но не могу понять, это не так важно, но от куда у выходного файла именно в конце
после <<END OF FILE>> есть перенос строки..., я же отступ и перенос скобок подвинул "} ? но перенос присутствует
Цитата Сообщение от volodin661 Посмотреть сообщение
с простыми " кавычками от него не избавиться,
нужен HERE-DOCUMENT синтаксис.
тоже поэксперементировал тут не в этом дело
PowerShell
1
2
3
4
5
6
7
8
function CONFIG {"<VOIP CONFIG FILE>>
123
321
213
<<END OF FILE>>"}
(CONFIG)[-1]
 
>
это коммандлет Set-Content по умолчанию себя так ведет

PowerShell
1
2
3
4
5
6
"0" | Set-Content c:\tmp\out.txt 
# 0000000000: 30 0D 0A
 
"0" | Set-Content c:\tmp\out.txt -NoNewline
 
# 0000000000: 30
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
05.02.2020, 12:29  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
с простыми " кавычками от него не избавиться,
нужен HERE-DOCUMENT синтаксис.
Да помогло, огромное спасибо за совет. , и последнее может знаете , делема

Изначально для того что-бы Русский текст в коде работал у меня кодировка UTF8-boom

если ничего не поставить то он автомате перекодирует на выходе сам в Win-1251
------ Поэтому было предпринято менять кодировку в выходном файле,

PowerShell
1
CONFIG | Set-Content "777-Test$x.txt" -Encoding utf8
_ Но почему-то на выходе я получаю тот-же utf8-boom
Смотрел тут ТЫЦ . но как-то нет информации именно по boom
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
05.02.2020, 13:09
Цитата Сообщение от magarjoba Посмотреть сообщение
Да помогло, огромное спасибо за совет
Растолкуйте пожалуйста как это вам помогло?

PowerShell
1
2
3
4
@"
hello world
"@ | Set-Content C:\tmp\out.txt
#0000000000: 68 65 6C 6C 6F 20 77 6F │ 72 6C 64 0D 0A           hello world
Добавлено через 11 минут
PowerShell
1
2
3
4
5
6
7
8
9
@"
Ура
"@ | Set-Content C:\tmp\outBOM.txt -Encoding UTF8BOM
#0000000000: EF BB BF D0 A3 D1 80 D0 │ B0 0D 0A                 �››У›р›а›
 
@"
Ура
"@ | Set-Content C:\tmp\outNoBOM.txt -Encoding UTF8NoBOM
#0000000000: D0 A3 D1 80 D0 B0 0D 0A │                          У›р›а›
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
05.02.2020, 14:11  [ТС]
Цитата Сообщение от alhaos Посмотреть сообщение
"@ | Set-Content C:\tmp\outNoBOM.txt -Encoding UTF8NoBOM
не так не работает

Set-Content : Не удается привязать параметр "Encoding". Не удается преобразовать значение "UTF8NoBOM" в тип "Microsoft.
PowerShell.Commands.FileSystemCmdletProv iderEncoding". Ошибка: "Не удается сопоставить пустое имя идентификатора UTF8No
BOM с допустимым именем перечислителя. Укажите одно из следующих имен перечислителя и попробуйте еще раз:
Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, UTF32, Ascii, Default, Oem, BigEndianUTF32"

ТЫЦ
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
05.02.2020, 14:20
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$PSVersionTable
 
Name                           Value
----                           -----
PSVersion                      7.0.0-preview.1
PSEdition                      Core
GitCommitId                    7.0.0-preview.1
OS                             Microsoft Windows 10.0.15063
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 185
05.02.2020, 14:26  [ТС]
Цитата Сообщение от alhaos Посмотреть сообщение
$PSVersionTable
а ну так там изменений куча )) ---- -----
PSVersion 5.1.17763.771

Использую эту версию так как системы win 10 по дефлту на 5,1 всегда ...

Добавлено через 3 минуты
Цитата Сообщение от alhaos Посмотреть сообщение
$PSVersionTable
нашел такой вариант на стаке
PowerShell
1
2
3
$MyFile = Get-Content $MyPath
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)
токо теперь не пойму как функции передать эту команду... , хочу проверить проканает или нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2020, 14:26
Помогаю со студенческими работами здесь

Поиск и замена данных в файле
день добрый, итак на хостинге есть файлы пхп мне надо заменить переменные в файлах на свои делаю через путти, пока что лишь могу найти...

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

Замена в строке всех слов, совпадающих с именами заданных переменных, значениями этих переменных
добрый день. подскажите пожалуйста, можно ли на бате реализовать следущее: @echo off cls set type=Debug set amodel=32

Поиск значений в файле и замена соответствующих в другом файле
Сильно не пинайте, я новичок. Существует 2 файла. В первом (1.txt) текст: 123=qwerty 321=пример 12457=еще пример Во втором...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru