Powershell - 字符串操作 - 从完整文件路径获取目录

Powershell - String Manipulation - getting dir from full file-path

请记住,我是新手,请保持温柔。

我有文档 "C:\folder1\folder2.03.2017 - FileName.csv" 的完整文件路径,我想将其操作到 return 文件存储的目录 ( C:\folder1\folder2), 减去文件名 (01.03.2017 - FileName.csv).

我正在尝试将此模块化,以便无论文件所在的子文件夹数量如何,它都能正常工作;我们也不会提前知道文件名,所以这再次需要模块化并删除直到并包括最后一个“\

有关当前如何构建的背景信息,我从我在 Whosebug 上看到的一个问题中截取了一些代码:

Function Get-FileName($initialDirectory)
{   
 [System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) |
 Out-Null

 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
 $OpenFileDialog.initialDirectory = $initialDirectory
 $OpenFileDialog.filter = “All files (*.*)| *.*”
 $OpenFileDialog.ShowDialog() | Out-Null
 $OpenFileDialog.filename
} #end function Get-FileName

# *** Entry Point to Script ***

$originalData = Get-FileName -initialDirectory “c:\” | Out-String
Write-Host $originalData
$originalDir = $originalData.Split('\')
$originalDir

运行 当前提示输入 "open dialog box",您将在 Windows 中看到。您 select 一个文件夹,当前输出为:

C:\folder1\folder2.03.2017 - FileName.csv

C:
folder1
folder2
01.03.2017 - FileName.csv

我尝试了几次不同的 -join 尝试,但 none 成功了。

我们将输入 C:\folder1\folder2\01.03.2017 - FileName.csv 作为变量 $originalData.

我们希望输出为 C:\folder1\folder2 作为变量 $originalDir.

Function Get-FileName($initialDirectory)
{   
[System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) |
Out-Null

$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = “All files (*.*)| *.*”
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
} #end function Get-FileName

$originalData = Get-FileName -initialDirectory “c:\”
Write-Host $originalData
$originalDir = (Get-ChildItem $originalData).DirectoryName

您可以像这样使用它,所以获取结果或您的函数并将其与 get-childitem 一起使用。

编辑:注意倒数第三行没有 | Out-String