piątek, 29 maja 2015

Rozdzielanie argumentów cmd w PS

Jak pracowałeś z aplikacjami konsolowymi z gigantyczną liczba argumentów to za pewne dostawałeś oczopląsu - ja tak miałem. Mam mały skrypcik do rozwiązania tego problemu:
function Split-Args
{
    param(
    [ValidatenotNullOrEmpty()]
    [string]$argStr
    )
    [hashtable]$arg =@{}

    [regex]::Matches($argStr, '-.+') | %{
        [string]$value = $_.Groups[0].Value
        [string]$first, $second = $value.Split([char[]]@(' ','=',':'),2)
        $first = $first.Replace('-','')
        $arg[$first] = $second
    }

    return $arg.GetEnumerator() | sort  Name
}
Wywołanie jest następujące:
Split-Args "-unzip=true -zippedFile zipfile1.ZIP -unzipFolder .\unzips.temp\ --date sysdate -year:2014 ​"
Przyjemniej szuka się parametrów posortowanych po kluczu w kilku linijkach niż w jednej lini:



Brak komentarzy:

Prześlij komentarz