Редактирование INI-файла, Сохранить формат - PullRequest
0 голосов
/ 19 октября 2019

Итак, у меня есть рабочий код. Я только что узнал об этом сегодня, но мне интересно, есть ли способ сохранить форматирование. (нашел его здесь, кстати).

$ini = Get-IniContent c:\temp\ini.ini 
$ini["posscreen"]["BitmapFile"] = "C:\Temp\FileC.bmp"  
$ini | Out-IniFile -FilePath c:\temp\ini2.ini

Вот как это выглядит нормально:

 [ShapePageFnt]
 Position=1.73 -2.76 -15.00
 Scale=0.35 0.36 0.38
 ZoneDepth=0
 StringLength=9600
 Font=VerdanaBold
 Color=0xFF000000
 Kerning=0.270000
 String=1/10
 StringAlignment=Left 

 [sgcArialBlack]
 FontFile=ArialBlack.png
 DataFile=ArialBlack.ftd
 StringLength=0
 StringStack=0
 StringAlignment=Center
 Kerning=0.25
 Color=0xFF00AAFF
 Position=0 0 -1000
 Dimension=1 1
 Scale=1 1 1
 String=

 [sgcXtraLabel]
 Position=-3.25 -5.61 -15.00
 Dimension=1.00 1.00
 Scale=0.33 0.33 0.33
 ZoneDepth=-101
 StringLength=20
 Font=VerdanaBold
 Color=0xFFFFFFFF
 String=Xtra Games
 StringAlignment=Center

После запуска кода:

[ShapePageFnt]
Position=1.73 -2.76 -15.00
Scale=0.35 0.36 0.38
ZoneDepth=0
StringLength=9600
Font=VerdanaBold
Color=0xFF000000
Kerning=0.270000
String=1/10
StringAlignment=Left 
[sgcArialBlack]
FontFile=ArialBlack.png
DataFile=ArialBlack.ftd
StringLength=0
StringStack=0
StringAlignment=Center
Kerning=0.25
Color=0xFF00AAFF
Position=0 0 -1000
Dimension=1 1
Scale=1 1 1
String=
[sgcXtraLabel]
Position=-3.25 -5.61 -15.00
Dimension=1.00 1.00
Scale=0.33 0.33 0.33
ZoneDepth=-101
StringLength=20
Font=VerdanaBold
Color=0xFFFFFFFF
String=Xtra Games
StringAlignment=Center

Любая помощь будетбыть оцененным

** Я пробовал -формат и -таблицу только для ударов и ничего не делал, кроме всплывающих ошибок. ** Есть ли /? для вещей в power shell, чтобы проверить, доступны ли эти условия?

Конечная цель: запустить код и вывести его так же, как он вводит с пробелами. (код заменяет заданный элемент в .ini)

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Я скачал скрипт и посмотрел параметры функции Out-IniFile. Я нашел там два параметра переключателя:

  • Pretty, который добавляет дополнительный разрыв строки между разделами
  • Loose, который добавляет пробелы вокруг знака равенства при записи ключа = значение

Чтобы использовать их, ваша команда написать INI-файл будет:

$ini | Out-IniFile -FilePath c:\temp\ini2.ini -Pretty -Loose

Автор этого скрипта забыл добавить описания параметров в комментарияхсправочная информация, поэтому Get-Help не показала это ..

0 голосов
/ 22 октября 2019

Я не могу комментировать другой ответ, так как у меня недостаточно очков репутации.

@ Тео ответ правильный;за исключением того, что 2 параметра действительно задокументированы: https://github.com/lipkau/PsIni/blob/master/PSIni/Functions/Out-IniFile.ps1#L98-L106

I ♥ PS> help Out-IniFile -Parameter pretty, loose

-Pretty [<SwitchParameter>]
    Writes the file as "pretty" as possible

    Adds an extra linebreak between Sections

    Required?                    false
    Position?                    named
    Default value                False
    Accept pipeline input?       false
    Accept wildcard characters?  false


-Loose [<SwitchParameter>]
    Adds spaces around the equal sign when writing the key = value

    Required?                    false
    Position?                    named
    Default value                False
    Accept pipeline input?       false
    Accept wildcard characters?  false

Кроме того, git-репозиторий этого модуля https://github.com/lipkau/PsIni. Вы можете создавать там проблемы из-за отсутствующей функциональности или общих вопросов

...