【问题标题】:Split-Path returns "System.Windows.Forms.TextBox, Text: mypath" so I cannot set-location as that path [duplicate]拆分路径返回“System.Windows.Forms.TextBox,文本:mypath”,所以我无法将位置设置为该路径 [重复]
【发布时间】:2019-12-28 05:56:32
【问题描述】:

我有一个带有 GUI 的脚本,它会弹出 Windows 资源管理器并允许用户选择一个文件来导出数据。但是,我想在他们选择的目录中操作一些文件,但是当我尝试在文件名上使用 Split-Path 时,我得到了这个错误:

设置位置:找不到驱动器。名为“System.Windows.Forms.TextBox, Text”的驱动器不存在。

有没有办法删除返回文本的开头部分,只获取里面的路径文本?

//users selected path from GUI Note* this is the path but it is selected by the gui button through file explorer
$UsersPath = "C:\username\desktop\MyFolder\myFile.csv"

$newPath = Split-Path -Path "$UsersPath"

Set-Location "$newPath.Text"

//In this case, $newPath = System.Windows.Forms.TextBox, Text: C:\Users\username\Desktop\myFolder

我曾尝试使用.Text.ToString 无济于事。

下面是我的代码,它让我打开一个对话框让用户选择一个文件。

function open_CSV_File{

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $openFileDialog.InitialDirectory = "C:\";
    $OpenFileDialog.Filter = "csv files (*.csv)|*.csv"
    "
    if ($OpenFileDialog.ShowDialog() -eq "OK"){
        $textbox_BrowseForCSV.Text = $OpenFileDialog.FileName 
    }
}

【问题讨论】:

  • 您发布的代码不会引发该错误。请创建一个minimal reproducible example 显示“用户选择的路径”的来源并用它更新您的问题。
  • 我假设 $newPath 实际上是一个 TextBox 实例,这可以解释症状; Rich 的回答和链接的帖子显示了如何访问可扩展字符串 ("...") 中的对象属性,但请注意,在您的场景中根本不需要可扩展字符串; Set-Location $newPath.Text 应该可以。
  • 谢谢@mklement0。是的,你说Set-Location $newPath.Text 应该工作是正确的。我的问题是 $userPath 的初始拆分。感谢您的帮助。
  • @AnsgarWiechers 它抛出了错误,因为我试图将位置设置为它无法识别的System.Windows.Forms.TextBox, Text: C:\Users\username\Desktop\myFolder
  • 再一次,您发布的示例代码不会引发该错误,因为"$newPath.Text" 会评估为"C:\username\desktop\MyFolder.Text"(因此可能会导致“找不到路径”错误)。如果您在发布之前实际测试运行代码,这对您来说是显而易见的。这就是我要求您创建minimal reproducible example 的确切原因。

标签: powershell cmdlets


【解决方案1】:

改变这个:

Set-Location "$newPath.Text"

对此:

Set-Location "$($newPath.Text)"

【讨论】:

  • 很好,但请注意,在这种简单的情况下,根本不需要使用可扩展字符串 - Set-Location $newPath.Text 就可以了。
  • 非常感谢您的建议!这种语法实际上解决了我的问题,但只有在我最初分割用户路径时才使用它。例如:Split-Path -Path "$($userInput.Text)" 让我获得“C:\users\desktop\myFolder”。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-11-28
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多