2010-12-28 2 views
8

이것은 이상 할 지 모르지만 나와 함께있어. 나는 파이프 된 결과의 마지막 요소 만 varaiable에 할당하려고합니다. "정규"코드에서이 작업을 수행하는 방법을 알고 있지만이 코드는 반드시 한 줄이어야합니다.powershell에서 파이프 라인의 마지막 요소 가져 오기

더 구체적으로 말하자면, FTP 요청에서 결과를 가져올 때 파일 확장자를 얻는 데 관심이 있습니다. ListDirectoryDetails.

이것은 문자열 확장 내에서 수행되므로 적절한 코드를 알아낼 수 없습니다.

현재 나는 마지막 3 Hars를 얻고있다. 그러나 그것은 정말로 불쾌한 것이다. 내 생각은

입니다

 
    $tempName.Split(".") | ? {$_ -eq $input[$input.Length-1]}

비슷한 일을했다

 
New-Object PSObject -Property @{
LastWriteTime = [DateTime]::ParseExact($tempDate, "MMM dd HH:mm",[System.Globalization.CultureInfo]::InvariantCulture)
Type = $(if([int]$tempSize -eq 0) { "Directory" } else { $tempName.SubString($tempName.length-3,3) })
Name = $tempName
Size = [int]$tempSize
}

, 온통 반복,하지만 난 찾고 있어요 요소가 마지막 하나입니다 만 꺼내 입력 배열.

무엇이 누락 되었습니까? 이 작업을 수행하는

답변

16

몇 가지 방법 : 일반적으로

$name = 'c:\temp\aaa.bbb.ccc' 

# way 1 
$name.Split('.') | Select-Object -Last 1 

# way 2 
[System.IO.Path]::GetExtension($name) 

# or if the dot is not needed 
[System.IO.Path]::GetExtension($name).TrimStart('.') 
9

, 파이프 라인의 마지막 요소를 얻기는 로마 위에서 알 수 있듯이 Select -Last 1을 사용하여 수행 할 수있다. 입력이 간단한 배열이 배열 슬라이스 예컨대 :

PS> $name = "c:\temp\aaa.bbb.txt" 
PS> $name.Split('.')[-1] 
txt 

이 파일의 확장자 또는 기본 이름을 얻기 위해 의도 되었습니까를 사용하는 경우 그러나, 대체 및 쉬운 방법은이 작업을 수행하려면? Type 속성에 이미 파일 이름의 확장명이 포함되어있는 것 같습니다.