Gå til innhold

Foto

Formatere ouput fra array i PowerShell


1 reply to this topic

#1 ilpostino

ilpostino

    Moderator

  • Moderatorer
  • 18 365 innlegg
  •   5. mars 2001

Skrevet 3. april 2019 - 18:31

Jeg har en ganske stor multidimensjonal array i PowerShell som jeg ønsker å skrive ut i en meny som brukeren skal velge noe fra. Istedenfor at man må scrolle oppover for å se alle valgene kunne jeg tenke meg å få det dumpet ut i en tabell med for eksempel 4 kolonner slik at jeg får komprimert outputen litt. Hvordan skal jeg få til det?
 
Nedenfor er et eksempelscript som viser hvordan jeg har laget det per nå. (det er noen forskjeller men dette er bare for å få frem poenget / problemet).
 
 

$tall = 0
$tall = 0
$psarray = @(
 ('Line' ,'One'),
 ('Line' ,'Two'),
 ('Line' ,'Tree'),
 ('Line' ,'Four'),
 ('Line' ,'Five'),
 ('Line' ,'One'),
 ('Line' ,'Two'),
 ('Line' ,'Tree'),
 ('Line' ,'Four'),
 ('Line' ,'Five'),
 ('Line' ,'One'),
 ('Line' ,'Two'),
 ('Line' ,'Tree'),
 ('Line' ,'Four'),
 ('Line' ,'Five'),
 ('Line' ,'One'),
 ('Line' ,'Two'),
 ('Line' ,'Tree'),
 ('Line' ,'Four'),
 ('Line' ,'Five'), 
 ('Line' ,'One'),
 ('Line' ,'Two'),
 ('Line' ,'Tree'),
 ('Line' ,'Four'),
 ('Line' ,'Five') 
 )

cls
echo "*** Meny ***"
foreach($item in $psarray) {
    echo "$tall $($item[1])"
    $tall++
}
$MenyTall = $psarray.length - 1

echo "`r`n"
do { $Svar = Read-Host -Prompt "Skriv inn svaret ditt fra menyen over" }
until (($Svar -match "^\d+$") -and ($Svar -In 0..$MenyTall) -eq "True")

Write-Host "Du skrev inn noe fra menyen og det var et tall"

Dette gir outputen under:

*** Meny ***
0 One
1 Two
2 Tree
3 Four
4 Five
5 One
6 Two
7 Tree
8 Four
9 Five
10 One
11 Two
12 Tree
13 Four
14 Five
15 One
16 Two
17 Tree
18 Four
19 Five
20 One
21 Two
22 Tree
23 Four
24 Five


mens jeg vil ha noe ala dette

OutPut.PNG


Dette innlegget har blitt redigert av ilpostino: 3. april 2019 - 18:56

  • 0

// Hjemmesiden min // Min reiseside // Meg på Spotify // Meg på Instagram // Kjøpe movie props? //

You will just never know what someone is dealing with behind closed doors. No matter how happy someone looks, how loud their laugh is, how big their smile is, there can still be a level of hurt that is indescribable. So be kind. Even when others are not, choose to be kind.

 


#2 Thorbear

Thorbear

    Bruker

  • Medlemmer
  • 250 innlegg
  •   31. mars 2007

Skrevet 3. april 2019 - 23:11

Ikke prøvd meg så mye på powershell før, men hva med noe som dette:

echo "*** Meny ***"
$columnWidth = 15
for ($i = 0; $i -lt $psarray.length; $i = $i + 4) {
    $outs = @{}
    for ($j = 0; $j -lt 4; $j++) {
        $k = $i + $j
        if ($k -lt $psarray.length) {
            $outs[$j] = "$k $($psarray[$k][1])"
        }
    }
    "{0,-$columnWidth}{1,-$columnWidth}{2,-$columnWidth}{3,-$columnWidth}" -f $outs[0], $outs[1], $outs[2], $outs[3]
}
echo "`r`n"

  • 0


0 bruker(e) leser denne tråden

0 medlemmer, 0 gjester, 0 skjulte brukere