请记住,我对此很陌生,请保持温和。
我有一个文档“ 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。
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
倒数第三行没有
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句