2008-11-26 2 views

ответ

357

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

ii . 

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

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

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

Надеется, что это помогает

+0

Я не знаю, почему это становится отвергнут - я могу видеть, не проголосовав его за отсутствие элегантности, но она по-прежнему хороший (хотя и многословный) ответ :) Вы получаете мой UP. – slipsec 2008-11-26 16:52:30

+1

Согласен. Это намного больше кода, но это позволяет немного гибкости. – 2008-11-28 06:23:56

19

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

invoke-item . 
14
explorer . 
+0

Это то, что я использовал в течение многих лет, но в последнее время «исследователь», похоже, вышел из моего пути. – DaveD 2017-04-20 01:29:30

108

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

  • 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 2012-05-09 17:09:44

+0

. Это лучший и наиболее информативный ответ здесь. также должны включать в себя другие ответы, в частности «ii». – DaveD 2016-04-09 01:18:12

+0

Это должен быть правильный ответ. – 2016-06-30 16:13:59

12

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

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

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

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

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, это было бы неважно (без ввода текста в любом случае), если кто-то скриптит и должен «открывать содержащую папку» в переменной, это становится вопросом соответствия строки извлеките каталог из полного пути к файлу.

Нет ли простой команды «Open-Containing-Folder», чтобы можно было заменить переменную?

например,

$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 c:\path 
7

Использование любого из них:

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

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

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

0

Это единственное, что соответствует моим уникальные ограничения

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