ส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยัง Windows“ เปิดด้วย”


28

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

ฉันต้องการเปิดไฟล์บางประเภทโดยใช้แอปพลิเคชัน แต่แอปพลิเคชันต้องมีพารามิเตอร์ไม่เช่นนั้นจะใช้งานไม่ได้ เป็นไปได้ไหมที่จะทำสิ่งนี้


คุณใช้ Windows รุ่นใด
iglvzx

ฉันใช้ Windows 7
jtpereyda

1
นี่เป็นวิธีแก้ปัญหาที่ดีกว่า: superuser.com/questions/136133/…

คำตอบ:


20

พบปัญหาเดียวกันกับ @jtpereyda และการแก้ปัญหาจาก @bobbymcr ไม่ได้ผลสำหรับฉันเช่นกัน ฉันพยายามรับพารามิเตอร์บรรทัดคำสั่งทั้งหมดที่ส่งผ่านไปยังสคริปต์ node.js โดยไม่ต้องใช้ node.exe ในคำสั่ง

ปัญหาคือว่าถ้าคุณเชื่อมโยงโปรแกรมกับส่วนขยายผ่านทางOpen Withกล่องโต้ตอบแล้วคุณจะได้สร้างการเชื่อมโยงแอปพลิเคชันแทนที่จะเชื่อมโยงกับนามสกุลไฟล์ระหว่างทั้งสอง และการเชื่อมโยงแอปพลิเคชันมีความสำคัญ

หากคุณไม่ต้องการแก้ไขรีจิสทรีคุณสามารถแก้ไข(Default)รหัสได้ที่เส้นทางต่อไปนี้:

HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command

คุณควรแทนที่node.exeด้วยแอปพลิเคชันที่คุณกำลังปรับ

หรือคุณสามารถลบโฟลเดอร์แอปพลิเคชันจากHKEY_CLASSES_ROOT\Applicationsโฟลเดอร์ทั้งหมดและการftypeเชื่อมโยงของคุณจะเริ่มทำงาน

ตรวจสอบให้แน่ใจว่าใช้%*ซึ่งจะผ่านในอาร์กิวเมนต์บรรทัดคำสั่งที่ไม่ได้ระบุที่เหลืออยู่หรือไม่มีอะไรเลย ถ้าคุณทำ"%2" "%3" "%4" "%5"คุณจะได้รับ 5 พารามิเตอร์สตริงว่างเปล่าส่งผ่านไปยังแอปพลิเคชันของคุณเมื่อคุณไม่ได้ระบุอาร์กิวเมนต์บรรทัดคำสั่งใด ๆ

สุดท้ายถ้าคุณไม่ตกลงกับการแก้ไขรีจิสทรีด้วยตนเองคุณสามารถใช้เครื่องมือฟรีแวร์จาก Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html

การเชื่อมโยงไฟล์จะปรากฏที่ด้านบนของรายการโดยไม่มีข้อความใด ๆ ในคอลัมน์ส่วนขยายแรก เพียงค้นหาชื่อของไฟล์เรียกทำงานในรายการและเลือกเพื่อแก้ไขcommand lineฟิลด์สำหรับopenชื่อแอ็คชัน

บน windows7 การเปลี่ยนแปลงนั้นมีผลทันทีโดยไม่ต้องรีบูทหรือรีสตาร์ทแอปพลิเคชัน อย่างไรก็ตามยูทิลิตี้ Nirsoft มีคุณสมบัติในการ "รีเฟรชเดสก์ท็อป" ในการปรับเปลี่ยนใด ๆ ดังนั้นมันจึงทำให้ฉันเชื่อว่าบางที Vista หรือระบบปฏิบัติการรุ่นก่อนหน้านี้อาจทำการแคชข้อมูล ในกรณีนี้ยูทิลิตี้จะเป็นทางออกที่ดีกว่ามิฉะนั้นคุณอาจต้องออกจากระบบและเข้าสู่ระบบเพื่อดูการเปลี่ยนแปลง


1
ตามหมายเหตุ: ดูเหมือนว่าควรจะใช้% 1 เพื่อส่งไฟล์ที่เกี่ยวข้องไปยังโปรแกรม ดูเหมือนว่าจะใช้งานไม่ได้โดยตรง อย่างน้อยฉันก็มีปัญหากับ ".pl" ของฉัน - การเชื่อมโยง Perl ในการชนะของฉัน 7
vlad_tepesch

1
ฉันได้รับมันให้ทำงานโดยการทดลองและข้อผิดพลาดส่งผลให้ค่าข้อมูลต่อไปนี้: "C:\Program Files\nodejs\node.exe" "%1"%*หมายเหตุ: %*ค่าไม่ได้อยู่ในเครื่องหมายคำพูดและไม่มีช่องว่างระหว่างมันกับเครื่องหมายคำพูดคู่ก่อนหน้า
Michael Paulukonis

ฉันยังลบรหัสHKEY_CLASSES_ROOT\.ulawใน regedit ในกรณีที่.ulawเป็นส่วนขยายของไฟล์ที่ฉันทำตามขั้นตอน
Matt

โฮเราสามารถผ่านการโต้แย้ง (พูดว่า 'ทดสอบ') ในขณะที่เปิด?
Apparao

โปรดเปลี่ยนคำตอบนี้เพื่อแก้ไข "[HKLM | HKCU] \ Software \ Classes" อย่างชัดเจนโดยขึ้นอยู่กับบริบทการติดตั้ง อย่าแก้ไข HKCR โดยตรง ดู"ข้อควรพิจารณาที่สำคัญ"สำหรับประเภทไฟล์และHKEY_CLASSES_ROOTบทความ มันเป็นความเข้าใจผิดที่เข้าใจได้เนื่องจากเอกสารของ Microsoft ส่วนใหญ่มีมุมมองแบบผสานสำหรับ HKCR ที่เปิดตัวใน Windows 2000 ประมาณ
Eryk Sun

10

คุณสามารถทำได้ด้วยassocและftypeที่พร้อมท์คำสั่ง เปิดพรอมต์คำสั่งที่ยกระดับแล้วลองทำสิ่งต่อไปนี้:

ftype MyFileType = C: \ MyDir \ MyProgram.exe / arg1 / arg2 "% 1"
assoc .xyz = MyFileType

สิ่งนี้จะเชื่อมโยง.xyzส่วนขยายด้วยMyProgram.exeและจะส่งบรรทัดคำสั่ง/arg1 /arg2 [filename.xyz]ไปยังโปรแกรมเพื่อเรียกใช้


1
ยอมรับเพราะนี่ดูเหมือนจะเป็นคำตอบที่ถูกต้องจากสิ่งที่ฉันวิจัย อย่างไรก็ตามกระบวนการนี้ดูเหมือนไม่มีประสิทธิภาพในระบบที่ฉันใช้ ฉันสามารถใช้ ftype และ assoc เพื่อตรวจสอบว่าการเปลี่ยนแปลงผ่าน แต่ไม่ส่งผลกระทบต่อโปรแกรมที่ใช้ในการเปิดไฟล์ อาจมีการเปลี่ยนแปลงกระบวนการใน Windows 7 หรือไม่
jtpereyda

การใช้คำตอบของ Marcus Popeทำให้ฉันทำงานอย่างถูกต้องโดยใช้ Windows 7 กำลังพยายามเล่น.ulawไฟล์soxโดยใช้อาร์กิวเมนต์ที่กำหนดไว้ล่วงหน้าจากนั้น โปรดทราบว่านอกจากการลบแอปพลิเคชันเก่าแล้วฉันยังลบไฟล์HKEY_CLASSES_ROOT\.ulawที่กำหนดประเภทไฟล์ด้วย
Matt

CMD assocและftypeเป็นคำสั่งดั้งเดิม พวกเขาไม่ได้รับการปรับปรุงให้เป็นส่วนขยายของการเชื่อมโยงไฟล์ที่เพิ่มใน Windows XP, 7 และ 8 พวกเขาเพียงแก้ไขการเชื่อมโยงไฟล์และคีย์ ProgId ภายใต้คีย์ระบบ "HKLM \ Software \ Classes" พวกเขาไม่ได้อ่านหรือแก้ไขการตั้งค่า HKCU ต่อผู้ใช้ซึ่งใช้การพิจารณาล่วงหน้าหรือคีย์ย่อยที่ใหม่กว่าเช่น "แอปพลิเคชัน" และ "SystemFileAssociations" หรือคีย์ความสามารถต่อแอปพลิเคชันจาก "RegisteredApplications" พวกเขายังไม่ได้อ่านหรือแก้ไขตัวเลือกของผู้ใช้ภายใต้ "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts"
Eryk Sun

3

ผู้ที่วางคำถามนั้นรายงานว่าคำตอบที่ดีที่สุดไม่ได้ผล

ฉันคิดออกแล้วสำหรับ XP ซึ่งอาจใช้กับระบบปฏิบัติการในภายหลัง

ที่พรอมต์คำสั่งคุณต้องมีสองคำสั่ง: assoc, ftype.

สองคนนี้สามารถแสดงสิ่งที่เกี่ยวข้องและแก้ไขการเชื่อมโยงได้ แต่มีการบิดคำแนะนำ MS ดูเหมือนจะผิด / ไม่สมบูรณ์ ฉันได้รับแจ้งถึงสิ่งนี้โดยการสังเกตเห็นรูปแบบการเชื่อมโยงที่ไม่มีเอกสารโดยแอปพลิเคชั่นที่มีประสบการณ์

ตัวอย่างนี้ช่วยให้สามารถส่งผ่านอาร์กิวเมนต์จำนวนมากไปยังโปรแกรมเชื่อมโยงได้

ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"

"%1" "%*"ไม่ได้พิมพ์ผิดว่ามี ดาวร้อยละจะไม่ทำงานโดยไม่ต้อง preceeding ร้อยละ 1

และนั่นคือการถ่ายทอดสดในทันทีไม่ต้องออกจากระบบ ฯลฯ

ถูกต้องแล้วจะผ่าน 3 เพื่อหาเรื่อง []

myfile.wotsit file1 file2 file3

ยังไม่ได้ทำ แต่ดูเหมือนว่าคำพูดภายนอกต่อไปนี้จะผ่าน -m หากโปรแกรมต้องการแฟล็ก

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"

ฉันไม่คิดว่ามันถูกต้อง การใช้เครื่องหมายคำพูดรอบ "% *" จะมีการส่งรายการอาร์กิวเมนต์เป็นอาร์กิวเมนต์เดียว นอกจากนี้คุณพลาดลำไส้ใหญ่หลังจากอักษรกำกับไดรฟ์ คำสั่งที่ถูกต้องควรเป็น: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
0

ฉันใช้โปรแกรม FilesTypeMan ที่ยอดเยี่ยมและในกรณีนี้คุณต้องการ%1 %* โดยไม่มีเครื่องหมายอัญประกาศ !!! หน้าต่างแช่ง
Jean-François Fabre

2

ฉันมีปัญหาคล้ายกันกับ PSP รุ่นเก่ากับ Windows7

วิธีแก้ปัญหานี้ (เปลี่ยนเชลล์ \ open \ บรรทัดคำสั่งในรีจิสทรี) ทำงาน แต่ต้องมีไวยากรณ์ "C: \ MyFolderName \ PSP.EXE"% 1 NO QUOTES AROUND% 1 มิฉะนั้นสิ่งนี้จะถูกตีความว่าเป็นค่าคงที่


1
ทำไม downvotes คำตอบนี้ช่วยให้ฉันได้รับคำสั่งในที่สุด!
ylka

ขอบคุณ - ฉันมีคำพูดและมันไม่ทำงาน
ฟิโอน่า - myaccessible.website

1

ไม่ใช่ทางออกที่ดีที่สุด แต่วิธีที่ง่ายที่สุดคือการใช้แบตช์ไฟล์

สร้างไฟล์ bat แบบนั้นและตั้งค่าโปรแกรมเริ่มต้นเป็นนามสกุลไฟล์ของคุณ และใช่จำเป็นต้องมีใบเสนอราคาว่างเปล่าหลังจากเริ่มต้น:

{app name} .bat

    start "" "{app path}" %1 /edit

ตัวอย่าง:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit

1
นี่เป็นทางออกเดียวที่ทำงานกับฉันใน Windows 10 มันช่วยให้ฉันเริ่ม Word 2013 ด้วยตัวเลือก / w เพื่อให้มีอินสแตนซ์ใหม่ในแต่ละการเปิดตัวซึ่งจำเป็นต้องใช้ Word กับเดสก์ท็อปเสมือน
vicmortelmans

0

นี่คือส่วนขยายที่ดูเหมือนจะทำสิ่งที่คุณต้องการ ฉันไม่เคยใช้มาก่อน แต่ดูเหมือนว่าจะได้รับความคิดเห็นที่ดี แสดงความคิดเห็นหากมีปัญหา


-1

สร้างทางลัด Windows และใช้เทมเพลตต่อไปนี้:

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1

2
และผู้ใช้ใช้สิ่งนี้เพื่อเปิดไฟล์เช่นxyz.jpgอย่างไร
G-Man กล่าวว่า 'Reinstate Monica'

เขาถามวิธีเปลี่ยนรีจิสตรีเพื่อให้บรรลุสิ่งนี้
ม้วน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.