Можно ли открыть окно проводника Windows из PowerShell?


304

Я уверен, что это возможно, но я не могу понять, как это сделать.

Есть какие-нибудь подсказки?

Ответы:


666

Использование:

ii .

что коротко для

Invoke-Item .

Это одна из самых распространенных вещей, которые я печатаю в командной строке PowerShell.


3
Забавно, что никто не ответил на этот самый простой ответ, кроме вас. :)
— halr9000

15
Я очень простой человек.
— EBGreen

85
Эта команда короткая для Invoke-Item. Точка после нее может быть любым путем.
— М. Дадли

Офигенно, очень простой ответ! Мне это нравится.
— Энтони Лириано,

Таким образом, первый параметр по умолчанию iiэто explorer, второй параметр это путь.
— Тимо

145

У вас есть несколько вариантов:

  • Powershell ищет исполняемые файлы на вашем пути, как и cmd.exe. Таким образом, вы можете просто ввести explorer в командной строке powershell. Используя этот метод, вы также можете передавать аргументы строки cmd (см. Http://support.microsoft.com/kb/314853 )
  • Invoke-Item командлет предоставляет способ для запуска исполняемого файла или открыть файл (или набор файлов) из в Windows PowerShell. Псевдоним : II
  • использовать system.diagnostics.process

Примеры:

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
Вы также можете сделать: invoke-item c: \ path \
— x0n

Это самый лучший и наиболее информативный ответ здесь, и он также должен включать в себя другие ответы здесь, особенно «ii».
— DaveD

iiявляется псевдонимомInvoke-Item
— Колоб Каньон

32

Используйте любой из них:

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

Вы можете применить любую из этих команд в PowerShell.

На всякий случай, если вы хотите открыть проводник из командной строки, последние две команды не работают, а первые три работают нормально.


23

Просто используйте Invoke-Itemкомандлет. Например, если вы хотите открыть окно проводника в текущем каталоге, вы можете сделать:

Invoke-Item .

Псевдоним для этого является II.
— VivekDev


18

Я столкнулся с этим вопросом в поисках способа открыть окно проводника в PowerShell, а также выбрать файл. Я добавляю этот ответ на случай, если другие столкнутся с ним по той же причине.

Чтобы запустить Explorer и выбрать файл, используйте Invoke-Expression:

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

Возможно, есть и другие способы сделать это, но у меня это сработало.


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

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

Надеюсь это поможет


1
Я не знаю, почему за это проголосовали - я вижу, что не проголосовал за отсутствие элегантности, но это все же хороший (хотя и многословный) ответ :) Вы получаете мой UP.
— промах

1
Я согласен. Это намного больше кода, но он обеспечивает некоторую гибкость.
— Майк Шепард

Когда я использую этот код, он открывает Проводник, но не каталог, который я передал как WorkingDirectory. Он просто открывает папку «Библиотеки». Ответ шовавник представлен правильно в одну строку.
— Phoenix14830


2

Я хотел написать это как комментарий, но у меня нет 50 репутации.

Все ответы в этой теме в основном должны использовать Invoke-Item или напрямую использовать explorer.exe; однако, это не полностью синонимично с «открытием, содержащим папку», так что с точки зрения открытия окна Проводника, как говорится в вопросе, если мы хотим применить ответ к определенному файлу, на этот вопрос все еще действительно нет ответа.

например,

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

^ эти две команды приведут к тому, что Notepad.exe или Firefox.exe будут вызваны для этих двух файлов соответственно, а не для окна explorer.exe в C: \ Users \ Foo \ (содержащий каталог).

Принимая во внимание, что если кто-то запускал эту команду из powershell, это не составило бы большого труда (в любом случае это было бы меньше ввода), если кто-то создает сценарии и ему нужно «открыть папку с переменной» для переменной, это становится вопросом соответствия строк для извлечения каталога из полный путь к файлу.

Нет ли такой простой команды «Открыть-содержащую-папку», которая могла бы заменить переменную?

например,

$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"). Каталог
— Dave_J

Альтернатива, которая по сути та же самая, но сохраняет все это в командлетах Powershell: ii (Split-Path "C: \ temp \ file.txt")
— EBGreen

0

Это единственное, что соответствует моим уникальным ограничениям: открывать папку как вкладку Quizo в любом существующем окне проводника.

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.