È possibile aprire una finestra di Windows Explorer da PowerShell?


304

Sono sicuro che questo deve essere possibile, ma non riesco a scoprire come farlo.

Qualche indizio?

Risposte:


666

Uso:

ii .

che è l'abbreviazione di

Invoke-Item .

È una delle cose più comuni che scrivo nella riga di comando di PowerShell.


3
È divertente che nessuno abbia risposto a questa risposta molto semplice tranne te. :)
halr9000,

15
Sono una persona molto semplice.
EBGreen

85
Questo comando è l'abbreviazione di Invoke-Item. Il punto dopo può essere qualsiasi percorso.
M. Dudley,

Risposta fantastica, molto semplice! Mi piace.
Anthony Liriano,

Quindi il primo parametro predefinito di iiè explorer, il secondo parametro è percorso.
Timo

145

Hai alcune opzioni:

Esempi:

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")

5
Puoi anche fare: invoke-item c: \ path \
x0n

Questa è la risposta più formulata e più istruttiva qui, e dovrebbe includere anche le altre risposte votate qui, in particolare "ii".
DaveD,

iiè un alias diInvoke-Item
Kolob Canyon,

32

Usa uno di questi:

  1. start .
  2. explorer .
  3. start explorer .
  4. ii .
  5. invoke-item .

È possibile applicare uno di questi comandi in PowerShell.

Nel caso in cui si desideri aprire Explorer dal prompt dei comandi, gli ultimi due comandi non funzionano e i primi tre funzionano correttamente.


23

Usa il Invoke-Itemcmdlet. Ad esempio, se si desidera aprire una finestra di Explorer nella directory corrente, è possibile:

Invoke-Item .

Un alias per questo è ii.
VivekDev


18

Mi sono imbattuto in questa domanda cercando un modo per aprire una finestra di Explorer da PowerShell e anche selezionare un file. Sto aggiungendo questa risposta nel caso in cui altri la trovino per lo stesso motivo.

Per avviare Explorer e selezionare un file, utilizzare Invoke-Expression:

Invoke-Expression "explorer '/select,$filePath'"

Probabilmente ci sono altri modi per farlo, ma questo ha funzionato per me.


10
$startinfo = new-object System.Diagnostics.ProcessStartInfo 
$startinfo.FileName = "explorer.exe"
$startinfo.WorkingDirectory = 'D:\foldername'

[System.Diagnostics.Process]::Start($startinfo)

Spero che questo ti aiuti


1
Non so perché questo sia stato votato verso il basso - Riesco a vedere non votarlo per la mancanza di eleganza, ma è comunque una buona risposta (anche se prolissa) :) Ottieni il mio UP.
slipsec,

1
Sono d'accordo. È molto più codice, ma consente una certa flessibilità.
Mike Shepard,

Quando uso questo codice, apre Explorer, ma non la directory che ho passato come WorkingDirectory. Apre solo la cartella Librerie. La risposta che shovavnik ha inviato lo fa correttamente in una sola riga.
Phoenix14830,


2

Volevo scrivere questo come commento ma non ho 50 reputazione.

Tutte le risposte in questo thread sono essenzialmente per utilizzare Invoke-Item o per utilizzare direttamente explorer.exe; tuttavia, questo non è del tutto sinonimo di "Apri cartella contenente", quindi in termini di apertura di una finestra di Explorer come afferma la domanda, se volessimo applicare la risposta a un determinato file la domanda non ha ancora ricevuto una risposta.

per esempio,

Invoke-Item C:\Users\Foo\bar.txt
explorer.exe C:\Users\Foo\bar.html

^ quei due comandi comporterebbero il richiamo di Notepad.exe o Firefox.exe sui due file rispettivamente, non una finestra explorer.exe su C: \ Users \ Foo \ (la directory contenente).

Mentre se si stesse eseguendo questo comando da PowerShell, questo non sarebbe un grosso problema (meno digitando comunque), se si sta eseguendo uno script e si deve "aprire la cartella contenente" su una variabile, diventa una questione di corrispondenza delle stringhe per estrarre la directory da il percorso completo del file.

Non esiste un semplice comando "Apri-Contenente-Cartella" in modo tale che una variabile possa essere sostituita?

per esempio,

$foo = "C:\Users\Foo\foo.txt"    
[some code] $fooPath
# opens C:\Users\Foo\ and not the default program for .txt file extension

2
Invoke-Item ([io.fileinfo] "C: \ temp \ file.txt"). Directory
Dave_J

Un'alternativa che è essenzialmente la stessa ma mantiene tutto nei cmdlet di Powershell: ii (Split-Path "C: \ temp \ file.txt")
EBGreen

0

Questa è l'unica cosa che si adatta ai miei vincoli unici di voler aprire la cartella come una scheda Quizo in qualsiasi finestra di Explorer esistente.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.