2016-08-08 13 views
1

私はいくつかのタスクを実行するための簡単なメニューを持っています。PowershellでXMLを使って2列に出力する方法

  1. アプリのひとつ:それはこのような画面へ出力する瞬間

  2. アプリケーション2。
  3. App Three。
  4. App Four。

しかし、私は(これはメニューに大きくなっ)このような出力をしたいと思います:

  1. アプリの一つ。 3. App Three。
  2. アプリケーション2。 4.アプリ4。

このコードを見て、私が上記を実装する方法をアドバイスできますか?

[xml][email protected]" 
<?xml version="1.0"?> 
<Menu> 
    <Head> 
    Dashboard 
    </Head> 
    <Actions> 
     <Id> 
      <Option>1</Option> 
      <Description>App One</Description> 
     </Id> 
     <Id> 
      <Option>2</Option> 
      <Description>App Two</Description> 
     </Id> 
     <Id> 
      <Option>3</Option> 
      <Description>App Three</Description> 
     </Id> 
     <Id> 
      <Option>4</Option> 
      <Description>App Four</Description> 
     </Id> 
    </Actions> 
</Menu> 
"@ 

    foreach ($Item in @($Config.Menu.Actions.Id)) 
    { 
     Write-Host ("{0}.`t{1}." -f $Item.Option,$Item.Description)} 

多分split/regexを使用する必要がありますか?

+0

使用 'フォーマット-Wide' –

答えて

0

項目数が偶数の場合、次のコードではメニュー文字列に改行文字(`n)が追加されます。つまり、メニューの各行に2つの項目が表示されます。あなたが設定したサイズにあなたの列をフォーマットすることができ-fを使用

$c = 1 
$menu = "" 

foreach ($Item in @($Config.Menu.Actions.Id)) { 

    $menu += ("{0,2}.`t{1,10}." -f $Item.Option,$Item.Description) 
    If($c % 2 -eq 0){$menu +="`n"} 

    $c++ 
} 

Write-Host $menu 

は、次の形式$Item.Optionは、10文字の幅を有するように2幅と$Item.Descriptionを持っています。

"{0,2}.`t{1,10}." -f $Item.Option,$Item.Description 
+0

ジョブ感謝を行いこんにちは、そこに2つの列の間のタブがあるか、それらが少しすっきり整列するように、それは、少し立派にフォーマットが必要ですか? – Ralluhb

+0

ありがとう、ソリューション作品! – Ralluhb

関連する問題