Powershell Рассчитать значение RightPad для динамического выравнивания - PullRequest
0 голосов
/ 23 октября 2019

Я использую функцию Write-Color для записи цветных сообщений и хочу выровнять статус

$file1 = "myFirstFileName.json"
$file2 = "myFile.json"
Function Write-Color([String[]]$Text, [ConsoleColor[]]$ForeGroundColor, [ConsoleColor[]]$BackGroundColor)
{
    for ($i = 0; $i -lt $Text.Length; $i++) {
        $Color = @{ }
        if ($ForeGroundColor -and $BackGroundColor)
        {
            $Color = @{
                ForegroundColor = $ForeGroundColor[$i%($ForeGroundColor.count)]
                BackgroundColor = $BackGroundColor[$i%($BackGroundColor.count)]
            }
        }
        elseif ($ForeGroundColor)
        {
            $Color = @{
                ForegroundColor = $ForeGroundColor[$i%($ForeGroundColor.count)]
            }
        }
        elseif ($BackGroundColor)
        {
            $Color = @{
                BackgroundColor = $BackGroundColor[$i%($BackGroundColor.count)]
            }
        }
        Write-Host $Text[$i] @Color -NoNewLine
    }
    Write-Host
}

Write-Color 'File ', $file1, ' is open'.PadRight(48), '[', ' ERROR! ', ']' -ForeGround Cyan, Yellow, Cyan, White, Red, White
Write-Color 'File ', $file2, ' is open'.PadRight(48), '[', ' ERROR! ', ']' -ForeGround Cyan, Yellow, Cyan, White, Red, White

Результат

Файл myFirstFileName.json isоткрыть [ОШИБКА! ]

Файл myFile.json открыт [ОШИБКА! ]

Ожидаемый результат

Файл myFirstFileName.json открыт [ОШИБКА! ]

Файл myFile.json открыт [ОШИБКА! ]

Ответы [ 2 ]

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

В настоящее время вы дополняете строки ' is open' одинаковой длины.

Вы захотите позвонить PadRight() в строке после добавления Ваша подстрока переменной длины:

Write-Color "File '$file1' is open".PadRight(48), '[', ' ERROR! ', ']'
Write-Color "File '$file2' is open".PadRight(48), '[', ' ERROR! ', ']'
0 голосов
/ 23 октября 2019

Вам нужно использовать двойные кавычки и объединить первый набор строк в одну строку. В противном случае вы добавляете только последнюю строку, и вы получите другие результаты. Вам нужно будет исправить некоторые цвета. Не уверен, как бы вы сделали имя файла другим цветом в этом сценарии.

Write-Color "File $file1 is open".PadRight(48), '[', ' ERROR! ', ']' -ForeGround Cyan, White, Red, White
Write-Color "File $file2 is open".PadRight(48), '[', ' ERROR! ', ']' -ForeGround Cyan, White, Red, White
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...