Ich bin mir sicher, dass dies möglich sein muss, aber ich kann nicht herausfinden, wie es geht.
Irgendwelche Hinweise?
Benutzen:
ii .
Dies ist eines der häufigsten Dinge, die ich in die PowerShell-Befehlszeile eingebe.
Sie haben einige Möglichkeiten:
Beispiele:
PS C:\> Explorer
PS C:\> Explorer .
PS C:\> Explorer /n
PS C:\> Invoke-Item c:\path\
PS C:\> ii c:\path\
PS C:\> Invoke-Item c:\windows\Explorer.exe
PS C:\> ii c:\windows\Explorer.exe
PS C:\> [diagnostics.process]::start("Explorer.exe")
Verwenden Sie einfach das Cmdlet "invoke-item". Wenn Sie beispielsweise ein Explorer-Fenster im aktuellen Verzeichnis öffnen möchten, können Sie Folgendes tun:
invoke-item .
Explorer .
Ich bin auf diese Frage gestoßen und habe nach einem Weg gesucht, ein Explorer-Fenster von PowerShell zu öffnen und also eine Datei auszuwählen. Ich füge diese Antwort hinzu, falls andere aus demselben Grund auf sie stoßen.
Um den Explorer zu starten und eine Datei auszuwählen, verwenden Sie Invoke-Expression
:
Invoke-Expression "Explorer '/select,$filePath'"
Es gibt wahrscheinlich andere Möglichkeiten, dies zu tun, aber das hat für mich funktioniert.
Verwenden Sie eine davon:
start .
Explorer .
start Explorer .
ii .
invoke-item .
Sie können einen dieser Befehle in PowerShell anwenden.
Nur für den Fall, dass Sie den Explorer über die Eingabeaufforderung öffnen möchten, funktionieren die letzten beiden Befehle nicht und die ersten drei funktionieren einwandfrei.
$startinfo = new-object System.Diagnostics.ProcessStartInfo
$startinfo.FileName = "Explorer.exe"
$startinfo.WorkingDirectory = 'D:\foldername'
[System.Diagnostics.Process]::Start($startinfo)
Hoffe das hilft
Starten Sie Explorer.exe
Einfacher einzeiliger Befehl
Verwenden Sie diese Zeile:
invoke-item c:\path
Ich wollte dies als Kommentar schreiben, aber ich habe keinen guten Ruf.
Alle Antworten in diesem Thread bestehen im Wesentlichen darin, Invoke-Item oder Explorer.exe direkt zu verwenden. Dies ist jedoch nicht vollständig gleichbedeutend mit "open enthaltender Ordner". Wenn Sie also die Frage beantworten, dass ein Explorer-Fenster geöffnet werden soll, wurde die Frage immer noch nicht wirklich beantwortet, wenn Sie die Antwort auf eine bestimmte Datei anwenden möchten.
z.B.,
Invoke-Item C:\Users\Foo\bar.txt
Explorer.exe C:\Users\Foo\bar.html
^ Diese beiden Befehle würden dazu führen, dass Notepad.exe oder Firefox.exe für die beiden Dateien aufgerufen wird, nicht ein Explorer.exe-Fenster unter C:\Users\Foo\(das enthaltende Verzeichnis).
Wenn Sie diesen Befehl von Powershell ausgeben würden, wäre dies keine große Sache (ohnehin weniger Tipparbeit). Wenn Sie Skripts erstellen und "enthaltende Ordner" für eine Variable öffnen müssen, ist es eine Frage des String-Abgleichs, um das Verzeichnis zu extrahieren der vollständige Pfad zur Datei.
Gibt es keinen einfachen Befehl "Open-Containing-Folder", durch den eine Variable ersetzt werden könnte?
z.B.,
$foo = "C:\Users\Foo\foo.txt"
[some code] $fooPath
# opens C:\Users\Foo\ and not the default program for .txt file extension
Dies ist das einzige, das zu meinen einzigartigen Einschränkungen passt
$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")