예를 들어 my.file.xlsx에서 파일 이름과 확장자를 추출해야합니다. 파일 이름이나 확장자를 모르고 이름에 점이 더있을 수 있으므로 오른쪽에서 문자열을 검색하고 첫 번째 점 (또는 왼쪽에서 마지막)을 찾으면 해당 부분을 추출해야합니다. 그 점에서 오른쪽과 왼쪽 부분.
더 나은 해결책이 있을지 모르지만 여기나 다른 곳에서 아무것도 찾지 못했습니다. 감사합니다
답변
파일이 디스크에서 나오고 다른 사람들이 언급했듯이 BaseName
및 Extension
속성을 사용하십시오 .
PS C:\> dir *.xlsx | select BaseName,Extension
BaseName Extension
-------- ---------
StackOverflow.com Test Config .xlsx
파일 이름을 문자열의 일부로 지정하면 (예 : 텍스트 파일 에서 가져옴) System.IO.Path 클래스 의 GetFileNameWithoutExtension
및 GetExtension
정적 메서드를 사용합니다 .
PS C:\> [System.IO.Path]::GetFileNameWithoutExtension("Test Config.xlsx")
Test Config
PS H:\> [System.IO.Path]::GetExtension("Test Config.xlsx")
.xlsx
답변
PS C:\Windows\System32\WindowsPowerShell\v1.0>split-path "H:\Documents\devops\tp-mkt-SPD-38.4.10.msi" -leaf
tp-mkt-SPD-38.4.10.msi
PS C:\Windows\System32\WindowsPowerShell\v1.0> $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.5477
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
답변
텍스트 파일에서 가져온 것으로 가정하고 이름 파일이 공백으로 둘러싸여 있으면 다음과 같은 방법이 있습니다.
$a = get-content c:\myfile.txt
$b = $a | select-string -pattern "\s.+\..{3,4}\s" | select -ExpandProperty matches | select -ExpandProperty value
$b | % {"File name:{0} - Extension:{1}" -f $_.substring(0, $_.lastindexof('.')) , $_.substring($_.lastindexof('.'), ($_.length - $_.lastindexof('.'))) }
파일 인 경우 필요에 따라 다음과 같이 사용할 수 있습니다.
$a = dir .\my.file.xlsx # or $a = get-item c:\my.file.xlsx
$a
Directory: Microsoft.PowerShell.Core\FileSystem::C:\ps
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 25/01/10 11.51 624 my.file.xlsx
$a.BaseName
my.file
$a.Extension
.xlsx
답변
PS C:\Users\joshua> $file = New-Object System.IO.FileInfo('file.type')
PS C:\Users\joshua> $file.BaseName, $file.Extension
file
.type
답변
FileInfo 개체의 BaseName 및 Extension 속성을 확인합니다.
답변
분할 경로 사용
$filePath = "C:\PS\Test.Documents\myTestFile.txt";
$fileName = (Split-Path -Path $filePath -Leaf).Split(".")[0];
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1];
답변
그냥 해:
$file=Get-Item "C:\temp\file.htm"
$file.Basename
$file.Extension