É possível abrir uma janela do Windows Explorer no PowerShell?

304

Tenho certeza de que isso deve ser possível, mas não consigo descobrir como fazê-lo.

Alguma pista?

Lachmania
fonte

Respostas:

666

Usar:

ii .

que é abreviação de

Invoke-Item .

É uma das coisas mais comuns que digito na linha de comando do PowerShell.

EBGreen
fonte
3
É engraçado que ninguém tenha respondido essa resposta mais simples que você. :) #
21298 halr9000
15
Eu sou uma pessoa muito simples.
EBGreen
85
Este comando é a abreviação de Invoke-Item. O ponto depois pode ser qualquer caminho.
M. Dudley
Impressionante, resposta muito simples! Eu gosto disso.
Anthony Liriano 27/03
Portanto, o primeiro parâmetro padrão de iié explorer, o segundo parâmetro é path.
Timo
145

Você tem poucas opções:

  • O Powershell procura executáveis ​​no seu caminho, assim como o cmd.exe. Então você pode simplesmente digitar explorer no prompt do PowerShell. Usando esse método, você também pode transmitir argumentos de linha cmd (consulte http://support.microsoft.com/kb/314853 )
  • O cmdlet Invoke-Item fornece uma maneira de executar um arquivo executável ou abrir um arquivo (ou conjunto de arquivos) no Windows PowerShell. Alias : ii
  • use system.diagnostics.process

Exemplos:

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
fonte
5
Você também pode fazer: invoke item c: \ path \
x0n
Esta é a resposta mais bem formulada e mais informativa aqui, e também deve incluir as outras respostas aprovadas aqui, especialmente "ii".
Daved
iié um alias deInvoke-Item
Kolob Canyon 06/10
32

Use qualquer um destes:

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

Você pode aplicar qualquer um desses comandos no PowerShell.

Caso você queira abrir o explorer no prompt de comando, os dois últimos comandos não funcionam e os três primeiros funcionam bem.

20B2
fonte
23

Basta usar o Invoke-Itemcmdlet. Por exemplo, se você deseja abrir uma janela do explorer no diretório atual, pode:

Invoke-Item .
tomasr
fonte
Um alias para isso é ii.
VivekDev 7/03/19
20
explorer .
Daniel Kreiseder
fonte
Isto é o que eu tenho usado por anos, mas recentemente explorerparece estar fora meu caminho
Daved
18

Me deparei com esta pergunta procurando uma maneira de abrir uma janela do Explorer no PowerShell e também selecionar um arquivo. Estou adicionando esta resposta caso outras pessoas a encontrem pelo mesmo motivo.

Para iniciar o Explorer e selecionar um arquivo, use Invoke-Expression:

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

Provavelmente existem outras maneiras de fazer isso, mas isso funcionou para mim.

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

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

Espero que isto ajude

Alex
fonte
1
Não sei por que isso está sendo rejeitado - não consigo votar por falta de elegância, mas ainda é uma boa (embora prolixo) resposta :) Você recebe meu UP.
Slipsec
1
Concordo. É muito mais código, mas permite alguma flexibilidade.
Mike Shepard
Quando uso esse código, ele abre o Explorer, mas não o diretório que eu passei como WorkingDirectory. Apenas abre a pasta Bibliotecas. A resposta que shovavnik enviou faz isso corretamente em uma única linha.
usar o seguinte código
4
start explorer.exe 

Comando simples de linha única

powershelluser
fonte
2

Eu queria escrever isso como um comentário, mas não tenho 50 reputação.

Todas as respostas neste tópico são essencialmente para usar Invoke-Item ou usar explorer.exe diretamente; no entanto, isso não é completamente sinônimo de "abrir pasta contendo", portanto, em termos de abrir uma janela do Explorer como a pergunta indica, se quisermos aplicar a resposta a um arquivo específico, a pergunta ainda não foi realmente respondida.

por exemplo,

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

^ esses dois comandos resultariam na chamada do Notepad.exe ou do Firefox.exe nos dois arquivos, respectivamente, não em uma janela do explorer.exe em C: \ Users \ Foo \ (o diretório que contém).

Considerando que, se alguém estivesse emitindo esse comando do PowerShell, isso não seria grande coisa (menos digitando de qualquer maneira), se alguém estiver usando scripts e precisar "abrir pasta contendo" em uma variável, será uma questão de correspondência de string para extrair o diretório de o caminho completo para o arquivo.

Não existe um comando simples "Pasta aberta que contenha uma variável que possa ser substituída?

por exemplo,

$foo = "C:\Users\Foo\foo.txt"    
[some code] $fooPath
# opens C:\Users\Foo\ and not the default program for .txt file extension
T Sandwich
fonte
2
Invoke-Item ([io.fileinfo] "C: \ temp \ file.txt"). Diretório
Dave_J
Uma alternativa que é essencialmente a mesma, mas mantém tudo em cmdlets do Powershell: ii (Caminho dividido "C: \ temp \ file.txt")
EBGreen
0

Essa é a única coisa que se encaixa nas minhas restrições exclusivas de querer que a pasta seja aberta como uma guia Quizo em qualquer janela existente do Explorer.

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