¿Es posible abrir una ventana del Explorador de Windows desde PowerShell?

304

Estoy seguro de que esto debe ser posible, pero no puedo descubrir cómo hacerlo.

¿Alguna pista?

Lachmania
fuente

Respuestas:

666

Utilizar:

ii .

que es la abreviatura de

Invoke-Item .

Es una de las cosas más comunes que escribo en la línea de comandos de PowerShell.

EBGreen
fuente
3
Es curioso que nadie haya respondido a esta respuesta más simple que tú. :)
halr9000
15
Soy una persona muy simple
EBGreen
85
Este comando es la abreviatura de Invoke-Item. El punto después puede ser cualquier camino.
M. Dudley
Impresionante, muy simple respuesta! Me gusta.
Anthony Liriano
Entonces, el primer parámetro predeterminado de iies explorer, el segundo parámetro es la ruta.
Timo
145

Tienes pocas opciones:

  • Powershell busca ejecutables en su ruta, al igual que cmd.exe. Por lo tanto, puede escribir Explorer en el indicador de PowerShell. Con este método, también puede pasar argumentos de línea cmd (consulte http://support.microsoft.com/kb/314853 )
  • El cmdlet Invoke-Item proporciona una forma de ejecutar un archivo ejecutable o abrir un archivo (o conjunto de archivos) desde Windows PowerShell. Alias : ii
  • use system.diagnostics.process

Ejemplos:

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")
codeape
fuente
55
También puede hacer: invoke-item c: \ path \
x0n
Esta es la respuesta mejor redactada y más informativa aquí, y también debe incluir las otras respuestas votadas aquí, especialmente "ii".
DaveD
iies un alias deInvoke-Item
Kolob Canyon
32

Use cualquiera de estos:

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

Puede aplicar cualquiera de estos comandos en PowerShell.

En caso de que desee abrir el explorador desde el símbolo del sistema, los dos últimos comandos no funcionan y los tres primeros funcionan bien.

20B2
fuente
23

Solo usa el Invoke-Itemcmdlet. Por ejemplo, si desea abrir una ventana del explorador en el directorio actual, puede hacer lo siguiente:

Invoke-Item .
tomasr
fuente
Un alias para eso es ii.
VivekDev
20
explorer .
Daniel Kreiseder
fuente
Esto es lo que he estado usando durante años, pero recientemente explorerparece estar fuera de mi camino
DaveD
18

Encontré esta pregunta buscando una manera de abrir una ventana de Explorer desde PowerShell y también seleccionar un archivo. Estoy agregando esta respuesta en caso de que otros la encuentren por la misma razón.

Para iniciar el Explorador y seleccionar un archivo, use Invoke-Expression:

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

Probablemente hay otras formas de hacer esto, pero esto funcionó para mí.

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

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

Espero que esto ayude

Alex
fuente
1
No sé por qué esto se está rechazando: puedo ver que no lo voté por falta de elegancia, pero sigue siendo una buena (aunque prolija) respuesta :) Me entiendes.
slipsec
1
Estoy de acuerdo. Es mucho más código, pero permite cierta flexibilidad.
Mike Shepard
Cuando uso este código, abre el Explorador, pero no el directorio que pasé como WorkingDirectory. Simplemente abre la carpeta Bibliotecas. La respuesta presentada por shovavnik lo hace correctamente en una sola línea.
Phoenix14830
4
start explorer.exe 

Comando simple de una sola línea

powershelluser
fuente
2

Quería escribir esto como un comentario, pero no tengo 50 reputación.

Todas las respuestas en este hilo son esencialmente usar Invoke-Item o usar explorer.exe directamente; sin embargo, esto no es completamente sinónimo de "abrir carpeta que contiene", por lo que en términos de abrir una ventana del Explorador como dice la pregunta, si quisiéramos aplicar la respuesta a un archivo en particular, la pregunta aún no ha sido respondida.

p.ej,

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

^ esos dos comandos darían lugar a que se invoque Notepad.exe o Firefox.exe en los dos archivos respectivamente, no una ventana explorer.exe en C: \ Users \ Foo \ (el directorio que lo contiene).

Mientras que si uno emitiera este comando desde powershell, esto no sería un gran problema (menos escribir de todos modos), si uno está haciendo scripts y necesita "abrir la carpeta que contiene" en una variable, se convierte en una cuestión de coincidencia de cadenas para extraer el directorio de La ruta completa al archivo.

¿No existe un comando simple "Open-Containing-Folder" que pueda sustituir una variable?

p.ej,

$foo = "C:\Users\Foo\foo.txt"    
[some code] $fooPath
# opens C:\Users\Foo\ and not the default program for .txt file extension
Sandwich T
fuente
2
Invoke-Item ([io.fileinfo] "C: \ temp \ file.txt"). Directorio
Dave_J
Una alternativa que es esencialmente la misma pero que lo mantiene todo en los cmdlets de Powershell: ii (Split-Path "C: \ temp \ file.txt")
EBGreen
0

Esto es lo único que se ajusta a mis limitaciones únicas de querer que la carpeta se abra como una pestaña Quizo en cualquier ventana del Explorador existente.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Beej
fuente