从路径中提取文件名

时间:2016-03-05 10:51:39

标签: powershell powershell-v2.0

我想从下面的路径中提取文件名:

D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv

现在我写了这段代码来获取文件名。只要文件夹级别没有改变,这工作正常。但是如果文件夹级别已更改,则此代码需要重写。我想方设法让它更灵活,例如代码总是可以提取文件名而不管文件夹级别。

($outputFile).split('\')[9].substring(0)

10 个答案:

答案 0 :(得分:90)

如果你可以包括扩展名,那么你应该做你想做的事。

$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$outputFile = Split-Path $outputPath -leaf

答案 1 :(得分:28)

使用

[System.IO.Path]::GetFileName("c:\foo.txt")返回foo.txt[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")返回foo

答案 2 :(得分:7)

在Get-ChildItem中使用BaseName显示文件的名称,并使用Name显示带扩展名的文件名。

$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf"

$filepath.BaseName

Basic-English-Grammar-1

$filepath.Name

Basic-English-Grammar-1.pdf

答案 3 :(得分:3)

你可以得到你想要的结果。

$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$a = $file.Split("\")
$index = $a.count - 1
$a.GetValue($index)

如果您使用“Get-ChildItem”获取“fullname”,您还可以使用“name”来获取文件的名称。

答案 4 :(得分:3)

您可以尝试以下方法:

[System.IO.FileInfo]$path = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
# Returns name and extension
$path.Name
# Returns just name
$path.BaseName

答案 5 :(得分:2)

使用通配符查找文件并获取文件名:

Resolve-Path "Package.1.0.191.*.zip" | Split-Path -leaf

答案 6 :(得分:1)

$(Split-Path" D:\ Server \ User \ CUST \ MEA \ Data \ In \ Files \ CORRECTED \ CUST_MEAFile.csv" -leaf)

答案 7 :(得分:1)

preventDefault

答案 8 :(得分:1)

只需完成使用.Net的答案即可。

在此代码中,路径存储在%1参数中(该参数在注册表中用引号引起来:\"%1\")。要检索它,我们需要$arg(内置arg)。 不要忘记$FilePath周围的引号。

# Get the File path:  
$FilePath = $args
Write-Host "FilePath: " $FilePath

# Get the complete file name:
$file_name_complete = [System.IO.Path]::GetFileName("$FilePath")
Write-Host "fileNameFull :" $file_name_complete

# Get File Name Without Extension:
$fileNameOnly = [System.IO.Path]::GetFileNameWithoutExtension("$FilePath")
Write-Host "fileNameOnly :" $fileNameOnly

# Get the Extension:
$fileExtensionOnly = [System.IO.Path]::GetExtension("$FilePath")
Write-Host "fileExtensionOnly :" $fileExtensionOnly

答案 9 :(得分:1)

$file = Get-Item -Path "c:/foo/foobar.txt"
$file.Name

使用两个相对绝对路径工作