簡體   English   中英

獲取從資源管理器菜單到 powershell 變量的文件夾路徑

[英]get a folder path from the explorer menu to a powershell variable

是否可以從powershell打開資源管理器窗口並將資源管理器中選擇的路徑存儲到變量中?

從powershell打開資源管理器窗口

PS C:> 資源管理器

也許這個腳本就是你想要的:

Function Select-FolderDialog
{
    param([string]$Description="Select Folder",[string]$RootFolder="Desktop")

 [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
     Out-Null     

   $objForm = New-Object System.Windows.Forms.FolderBrowserDialog
        $objForm.Rootfolder = $RootFolder
        $objForm.Description = $Description
        $Show = $objForm.ShowDialog()
        If ($Show -eq "OK")
        {
            Return $objForm.SelectedPath
        }
        Else
        {
            Write-Error "Operation cancelled by user."
        }
    }

用於:

$folder = Select-FolderDialog # the variable contains user folder selection

我發現在所選答案中使用反射有點尷尬。 下面的鏈接提供了更直接的方法

http://www.powershellmagazine.com/2013/06/28/pstip-using-the-system-windows-forms-folderbrowserdialog-class/

復制粘貼相關代碼:

Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$FolderBrowser.SelectedPath

以上對我不起作用。 使用 Powershell 版本 2 運行 Windows 7。我確實找到了以下內容,它確實允許彈出和選擇:

    Function Select-FolderDialog
    {
         param([string]$Description="Select Folder",[string]$RootFolder="Desktop")

     [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") Out-Null     

     $objForm = New-Object System.Windows.Forms.FolderBrowserDialog
     $objForm.Rootfolder = $RootFolder
     $objForm.Description = $Description
     $Show = $objForm.ShowDialog()
     If ($Show -eq "OK")
     {
         Return $objForm.SelectedPath
     }
     Else
     {
        Write-Error "Operation cancelled by user."
     }
    }

以防萬一其他人有同樣的問題。

只是想貼一個附錄,我相信有管道| 中間缺失:

[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

和:

Out-Null

這是一個打開資源管理器對話框窗口的解決方案,要求用戶選擇一個文件夾。 然后將文件夾路徑存儲在名為“path”的變量中:

Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPathode

只有在我將“ .SelectedPathode ”替換為“ .SelectedPath ”之后,您的代碼才對有用

Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPath

這里也是關於各自屬性的文檔 - https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.folderbrowserdialog.selectedpath?view=net-5.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM