从文件路径中获得字符的最后一次出现,只获得没有文件扩展名的文件名在PowerShell?



基本上,我通过字符斜杠(")分割了文件路径。我的代码试图基本上得到没有文件扩展名的文件名,因为我需要它来执行另一个操作。但是,我想确保这段代码在某种意义上是动态的,即使文件路径中有几个点(.),它仍然会检索文件路径的确切文件名,但没有文件扩展名。基本上,我只是想确保得到最后一次出现的。以及文件路径中没有文件扩展名的文件名。我试过使用LastIndexOf,但它不起作用。提前感谢任何回复这篇文章的人。

注:$fileparts被字符斜杠分割,但我不知道为什么它没有反映在post

$sql_return_path = C:DocumentsTesttestFileResult.txt
#Get file directory with no file name
$filedirectory = Split-Path -Path $sql_return_path
#Split file path to get file name
$fileparts = ($sql_return_path).Split("")
$fileobject = 0
foreach($x in $filename) {
$filename = $fileparts[-1]
#Test
$filenamenoextension = $filename.LastIndexOf(".")[0]
#Official
#$filenamenoextension = $filename.split(".")[0]

$fileobject++
}

目前,$ filenamenextension按点(".")分割并获得索引0时的输出是testFileResult,它只是文件名,没有".txt"文件扩展名.

您可以简单地使用System.IO.Path类中的GetFileNameWithoutExtension方法示例

[System.IO.Path]::GetFileNameWithoutExtension("..xyzabc.de") # ==> "abc"

可以使用System.IO.FileInfo对象来获得BaseNameExtension属性。

foreach ($f in Get-ChildItem $dir) {
$content = New-Object System.IO.FileInfo($f)
echo $content.BaseName
echo $content.Extension
}

最新更新