PowerShell'den bir Windows Gezgini penceresi açmak mümkün müdür?


304

Eminim bunun mümkün olması gerekir, ancak nasıl yapılacağını bulamıyorum.

Herhangi bir ipucu var mı?

Yanıtlar:


667

kullanın:

ii .

ki bunun için kısadır

Invoke-Item .

PowerShell komut satırına yazdığım en yaygın şeylerden biri.


3
Bu en basit yanıtı kimsenin cevaplamaması çok komik. :)
halr9000

15
Ben çok basit bir insanım.
EBGreen

85
Bu komut Çağırma Öğesi kısaltmasıdır. Ondan sonraki nokta herhangi bir yol olabilir.
M. Dudley

Harika, çok basit bir cevap! Bunu sevdim.
Anthony Liriano

Yani ilk parametre varsayılan iiIS explorer, ikinci param yoludur.
Timo

146

Birkaç seçeneğiniz var:

  • Powershell, cmd.exe'nin yaptığı gibi yolunuzdaki yürütülebilir dosyaları arar. Böylece powershell istemine explorer yazabilirsiniz. Bu yöntemi kullanarak cmd satırı bağımsız değişkenlerini de iletebilirsiniz (bkz. Http://support.microsoft.com/kb/314853 )
  • Invoke Öğe cmdlet PowerShell içinden bir yol yürütülebilir dosyayı çalıştırmak veya bir dosyayı açmak için (veya dosya kümesi) sağlar. Takma ad : ii
  • system.diagnostics.process kullanın

Örnekler:

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
Ayrıca şunları da yapabilirsiniz: invoke-item c: \ path \
x0n

Bu, buradaki en iyi ifade edilen ve en bilgilendirici cevaptır ve ayrıca burada diğer yükseltilmiş cevapları da içermelidir, özellikle "ii".
DaveD

iitakma adıdırInvoke-Item
Kolob Canyon

33

Bunlardan herhangi birini kullanın:

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

Bu komutlardan herhangi birini PowerShell'de uygulayabilirsiniz.

Explorer'ı komut isteminden açmak istemeniz durumunda, son iki komut çalışmaz ve ilk üçü iyi çalışır.


23

Sadece Invoke-Itemcmdlet'i kullanın . Örneğin, geçerli dizinde bir gezgin penceresi açmak istiyorsanız şunları yapabilirsiniz:

Invoke-Item .

Bunun için bir takma ad ii.
VivekDev


18

PowerShell'den bir Explorer penceresi açmanın bir yolunu arayan bu soruya rastladım ve ayrıca bir dosya seçin. Bu cevabı başkalarının da aynı nedenden dolayı karşılaşması durumunda ekliyorum.

Explorer'ı başlatmak ve bir dosya seçmek için şunu kullanın Invoke-Expression:

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

Muhtemelen bunu yapmanın başka yolları da var, ama bu benim için işe yaradı.


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

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

Bu yardımcı olur umarım


1
Bunun neden oylandığını bilmiyorum - zarafet eksikliği için oy vermediğini görebiliyorum, ama yine de iyi (garip olsa da) bir cevap :) Sen benim UP olsun.
slipsec

1
Katılıyorum. Çok daha fazla kod var, ancak biraz esneklik sağlıyor.
Mike Shepard

Bu kodu kullandığımda, Explorer'ı açar, ancak WorkingDirectory olarak geçirdiğim dizin değil. Sadece Kütüphaneler klasörünü açar. Gönderilen cevap shovavnik tek bir satırda doğru yapar.
Phoenix14830


2

Bunu bir yorum olarak yazmak istedim ama 50 itibarım yok.

Bu konudaki tüm cevaplar temel olarak Invoke-Item kullanmak veya doğrudan explorer.exe kullanmak içindir; ancak, bu "açık klasör" ile tamamen eşanlamlı değildir, bu nedenle soru belirtildiği gibi bir Explorer penceresi açmak açısından, cevabı belirli bir dosyaya uygulamak istersek, soru hala cevaplanmamıştır.

Örneğin,

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

^ Bu iki komut, C: \ Users \ Foo \ (içeren dizin) üzerinde bir explorer.exe penceresi değil, sırasıyla iki dosyada Notepad.exe veya Firefox.exe dosyasının çağrılmasına neden olur.

Bir kişi bu komutu powershell'den yayınlıyorsa, bu büyük bir sorun olmaz (yine de daha az yazarak), eğer bir komut dosyasıysa ve bir değişken üzerinde "içeren klasörü aç" gerekiyorsa, dizini ayıklamak için bir dize eşleme meselesi haline gelir. dosyanın tam yolu.

Bir değişkenin yerine kullanılabilecek basit bir komut "Open-içeren-Klasör" yok mu?

Örneğin,

$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"). Dizin
Dave_J

Temelde aynı olan ancak hepsini Powershell cmdlet'lerinde tutan bir alternatif: ii (Split-Path "C: \ temp \ file.txt")
EBGreen

0

Klasörün mevcut herhangi bir Explorer penceresinde Quizo Sekmesi olarak açılmasını istememe konusundaki benzersiz kısıtlamalarıma uyan tek şey budur .

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.