【问题标题】:Powershell - String Manipulation - getting dir from full file-pathPowershell - 字符串操作 - 从完整文件路径获取目录
【发布时间】:2017-03-01 13:49:37
【问题描述】:

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

我有一个文档 "C:\folder1\folder2\01.03.2017 - FileName.csv" 的完整文件路径,我想对其进行操作以返回文件存储的目录在 (C:\folder1\folder2) 中,减去文件名 (01.03.2017 - FileName.csv)。

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

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

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

当前运行此程序会提示您在 Windows 中看到一个“打开的对话框”。您选择一个文件夹,当前的输出是:

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

C:
folder1
folder2
01.03.2017 - FileName.csv

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

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

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

【问题讨论】:

  • (Get-Childitem itemname).DirectoryName
  • 这将如何使用? (Get-ChildItem $originalData).DirectoryName ?
  • 这个给你文件夹路径,试试吧
  • 我可能很厚,但我如何将其指向我的数据?

标签: string powershell-3.0


【解决方案1】:
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

【讨论】:

  • 删除了我的错误。根据您的编辑更正了我的脚本;感谢您强调您删除了 | Out-String !非常感谢您的快速回复/解决方案!
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2012-10-19
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多