เป็นไปได้ไหมที่จะเปิดหน้าต่าง Windows Explorer จาก PowerShell


304

ฉันแน่ใจว่าสิ่งนี้จะต้องเป็นไปได้ แต่ฉันไม่สามารถหาวิธีการได้

เบาะแสใด ๆ

คำตอบ:


666

ใช้:

ii .

ซึ่งสั้นสำหรับ

Invoke-Item .

เป็นหนึ่งในสิ่งที่พบบ่อยที่สุดที่ฉันพิมพ์ในบรรทัดคำสั่ง PowerShell


3
มันตลกที่ไม่มีใครตอบคำตอบที่ง่ายที่สุด แต่คุณ :)
halr9000

15
ฉันเป็นคนเรียบง่ายมาก
EBGreen

85
คำสั่งนี้ย่อมาจาก Invoke-Item จุดหลังจากนั้นจะเป็นเส้นทางใดก็ได้
M. Dudley

คำตอบที่ยอดเยี่ยมง่ายมาก! ฉันชอบมัน.
Anthony Liriano

ดังนั้นพารามิเตอร์แรกเริ่มต้นของiiคือexplorer, พารามิเตอร์ที่สองคือเส้นทาง
Timo

145

คุณมีตัวเลือกน้อย:

  • Powershell ค้นหาแฟ้มปฏิบัติการในเส้นทางของคุณเช่นเดียวกับ cmd.exe ดังนั้นคุณสามารถพิมพ์ explorer บนพรอมต์พาวเวอร์เซลล์ ใช้วิธีนี้คุณยังสามารถส่งต่ออาร์กิวเมนต์ cmd-line (ดูhttp://support.microsoft.com/kb/314853 )
  • วิงวอนรายการ cmdletมีวิธีการเรียกใช้แฟ้มที่ปฏิบัติการหรือเปิดแฟ้ม (หรือชุดของไฟล์) จากภายใน 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
คุณยังสามารถทำได้: เรียกใช้รายการ c: \ path \
x0n

นี่คือคำตอบที่ดีที่สุดและให้ข้อมูลมากที่สุดที่นี่และควรรวมคำตอบ upvoted อื่น ๆ ที่นี่โดยเฉพาะ "ii"
DaveD

iiเป็นนามแฝงของInvoke-Item
Kolob Canyon

32

ใช้สิ่งเหล่านี้:

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

คุณอาจใช้คำสั่งใด ๆ เหล่านี้ใน PowerShell

ในกรณีที่คุณต้องการเปิด explorer จากพรอมต์คำสั่งคำสั่งสองคำสั่งสุดท้ายไม่ทำงานและสามข้อแรกก็ใช้ได้


23

เพียงใช้Invoke-Itemcmdlet ตัวอย่างเช่นถ้าคุณต้องการเปิดหน้าต่าง explorer ในไดเรกทอรีปัจจุบันคุณสามารถทำได้:

Invoke-Item .

นามแฝงสำหรับนั่นคือ ii
VivekDev

20
explorer .

นี่คือสิ่งที่ฉันใช้มานานหลายปี แต่explorerดูเหมือนว่าฉันจะออกนอกเส้นทางของฉัน
DaveD

18

ฉันมาข้ามคำถามนี้มองหาวิธีที่จะเปิดหน้าต่าง Explorer ได้จาก 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
ฉันไม่รู้ว่าทำไมสิ่งนี้ถึงได้รับการโหวต - ฉันเห็นไม่ลงคะแนนเพราะขาดความสง่างาม แต่ก็ยังเป็นคำตอบที่ดี
slipsec

1
ฉันเห็นด้วย. มันเป็นโค้ดที่มากขึ้น แต่มันก็ช่วยให้มีความยืดหยุ่น
Mike Shepard

เมื่อฉันใช้รหัสนี้มันจะเปิด Explorer แต่ไม่ใช่ไดเรกทอรีที่ฉันผ่านเป็น WorkingDirectory มันเพิ่งเปิดโฟลเดอร์ Libraries คำตอบที่ shovavnik ส่งนั้นทำได้อย่างถูกต้องในบรรทัดเดียว
Phoenix14830


2

ฉันต้องการที่จะเขียนสิ่งนี้เป็นความคิดเห็น แต่ฉันไม่ได้มี 50 ชื่อเสียง

คำตอบทั้งหมดในชุดข้อความนี้มีจุดประสงค์เพื่อใช้ Invoke-Item หรือใช้ explorer.exe โดยตรง อย่างไรก็ตามสิ่งนี้ไม่ได้มีความหมายเหมือนกันอย่างสมบูรณ์กับ "โฟลเดอร์เปิดที่มี" ดังนั้นในแง่ของการเปิดหน้าต่าง Explorer ตามที่ระบุคำถามหากเราต้องการใช้คำตอบกับไฟล์เฉพาะคำถามที่ยังไม่ได้รับคำตอบจริงๆ

เช่น,

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
เรียกใช้รายการ ([io.fileinfo] "C: \ temp \ file.txt") ไดเรกทอรี
Dave_J

อีกทางเลือกหนึ่งที่เหมือนกัน แต่เก็บไว้ใน Powershell cmdlets: ii (Split-Path "C: \ temp \ file.txt")
EBGreen

0

นี่เป็นสิ่งเดียวที่เหมาะสมกับข้อ จำกัด ที่ไม่ซ้ำกันของฉันที่ต้องการให้โฟลเดอร์เปิดเป็นQuizo Tabในหน้าต่าง Explorer ที่มีอยู่

$objShell = New-Object -ComObject "Shell.Application"
$objShell.Explore("path")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.