我想从下面的路径中提取文件名:
D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv
现在我写了这段代码来获取文件名。只要文件夹级别没有改变,这工作正常。但是如果文件夹级别已更改,则此代码需要重写。我想方设法让它更灵活,例如代码总是可以提取文件名而不管文件夹级别。
($outputFile).split('\')[9].substring(0)
答案 0 :(得分:90)
如果你可以包括扩展名,那么你应该做你想做的事。
$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$outputFile = Split-Path $outputPath -leaf
答案 1 :(得分:28)
使用.net:
[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
使用两个相对绝对路径工作