Windows: วิธีเพิ่มชุดการกระทำสคริปต์ลงในเมนูคลิกขวา


18

ฉันมีโปรแกรมไม่กี่โปรแกรมที่สร้างไฟล์ชั่วคราวหรือไฟล์สำรองหรือไฟล์ที่คล้ายกันซึ่งไม่สำคัญ ตัวอย่างเช่นGVimสำหรับ Windows โดยค่าเริ่มต้นจะสร้างไฟล์สำรองfilename.txt~ไว้

บางครั้งฉันต้องล้างไดเรกทอรีและลบไฟล์เหล่านี้ทั้งหมด ฉันได้สร้างไฟล์. bat อย่างง่ายสำหรับสิ่งนี้ อย่างไรก็ตามมันเป็นเรื่องยุ่งยากที่จะต้องเริ่มต้น CMD นำทางไปยังโฟลเดอร์เรียกใช้สคริปต์ โดยเฉพาะอย่างยิ่งเนื่องจากนี่เป็นสคริปต์ที่ฉันต้องการเรียกใช้บ่อยในโฟลเดอร์ต่างๆ และฉันไม่ต้องการคัดลอกสคริปต์ไปยังหลาย ๆ โฟลเดอร์เพราะนี่จะเป็นฝันร้ายของการบำรุงรักษา

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

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

คำตอบ:


18

ฉันได้ลองใช้ Windows XP SP3 ด้วยคีย์. reg นี้แล้ว ไม่มี Windows 7 ในขณะนี้เพื่อทดสอบอย่างถูกต้อง แต่ควรใกล้เคียงกัน

  1. เปิดแผ่นจดบันทึกและวางรหัสจากด้านล่าง
  2. แก้ไขตามความต้องการของคุณ
  3. บันทึกเป็น MyScript1.reg
  4. คลิกสองครั้งเพื่อนำเข้าในรีจิสทรี
  5. ทดสอบโดยคลิกขวาที่ไดเรกทอรีใด ๆ ใน Explorer
Windows Registry Editor เวอร์ชัน 5.00

[HKEY_CLASSES_ROOT \ ไดเรกทอรี \ shell \ MyScript1]
@ = "เรียกใช้ MyScript1"

[HKEY_CLASSES_ROOT \ ไดเรกทอรี \ shell \ MyScript1 \ คำสั่ง]
@ = "\" C: \\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \ "\"% 1 \ ""

4
ฉันแก้ไขคำตอบของคุณแล้ว "Windows Registry Editor Version 5.00" เป็น 'ส่วนหัว' ที่จำเป็นสำหรับไฟล์. reg มิฉะนั้น Windows จะปฏิเสธที่จะฉีดเนื้อหาลงในรีจิสทรี
extremko

+1 สำหรับการชี้สิ่งนั้นออกมา ฉันลืมรหัส c / p ไปโดยสิ้นเชิง
Robert Schmidt

1
ฉันลองสิ่งนี้ ตอนนี้ฉันสามารถคลิกขวาที่โฟลเดอร์โดยตรง แต่มันไม่ทำงานถ้าฉันคลิกขวาภายในโฟลเดอร์ ซึ่งเป็นสิ่งที่ฉันต้องการ ทำอย่างไร
ervingsb

1
เป็นคำถามที่แตกต่างจาก"เพื่อให้ฉันสามารถคลิกขวาที่โฟลเดอร์ใน Explorer และคลิกล้างข้อมูลจากนั้นให้สคริปต์ของฉันทำงานในโฟลเดอร์นี้"
Robert Schmidt

ใช่นั่นคือเหตุผลที่ฉันชี้แจงมัน ขอโทษที่ไม่แน่ชัด ฉันคิดว่ามันเป็นการคลิกขวาที่โฟลเดอร์ มันไม่ใช่แค่ไอคอนโฟลเดอร์ แต่อยู่ข้างในโฟลเดอร์
ervingsb

19

จริงๆแล้วคำตอบปัจจุบันไม่ล้าสมัย ฉันลองสิ่งเดียวกันบน Windows 10 และสามารถเพิ่มลงRun Batch scriptในเมนูบริบทของโฟลเดอร์ทั้งหมดใน Windows

นี่คือเนื้อหาของชุดสคริปต์ของฉัน (จะไม่ทำงานกับเส้นทาง UNC ):

@ECHO OFF
ECHO% ~ n0 ถูกเรียกด้วยอาร์กิวเมนต์ดังนี้
SET args =% *
หากไม่ได้กำหนดไว้จะเป็น GOTO END
ECHO% *
: END
หยุด

การเปลี่ยนแปลงรีจิสทรีที่ฉันทำสามารถทำซ้ำได้กับไฟล์ REG นี้:

Windows Registry Editor เวอร์ชัน 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run ชุดสคริปต์]
@ = "& เรียกใช้สคริปต์ชุด"

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run ชุดคำสั่งสคริปต์ \ คำสั่ง]
@ = "\" H: \\ BATCH_FILE_PATH \\ บริบท-batch.bat \ "\"% 1 \ ""

เพิ่มเฉพาะรายการเมนูบริบทสำหรับไดเรกทอรี / โฟลเดอร์ทั้งหมดใน Windows หากคุณต้องการให้มันแสดงสำหรับแต่ละไฟล์และทุกไฟล์แทนคุณสามารถใช้สิ่งนี้:

Windows Registry Editor เวอร์ชัน 5.00

[สคริปต์ HKEY_CLASSES_ROOT \ * \ shell \ Run]
@ = "เรียกใช้ & สคริปต์"

[HKEY_CLASSES_ROOT \ * \ shell \ Run script \ คำสั่ง]
@ = "\" H: \\ BATCH_FILE_PATH \\ บริบท-batch.bat \ "\"% 1 \ ""

หรือคุณสามารถเพิ่มสคริปต์ชุดงานของคุณลงในSend Toรายการสินค้าโดยสร้างทางลัดไปยังสคริปต์ชุดงานและวางไว้ใต้%APPDATA%\Microsoft\Windows\SendTo(หรือป้อนshell:sendtoลงในแถบที่อยู่)

หากคุณต้องการให้สคริปต์ของคุณแสดงในเมนูบริบทที่ปรากฏขึ้นเมื่อคุณคลิกขวาบนพื้นที่ว่างในไดเรกทอรี (พื้นหลังไดเรกทอรี?) คุณสามารถใช้ไฟล์ REG ต่อไปนี้:

Windows Registry Editor เวอร์ชัน 5.00

[สคริปต์ HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run ชุด]
@ = "& เรียกใช้สคริปต์ชุด"
"ไอคอน" = "% SystemRoot% \\ \\ System32 shell32.dll 71"

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run ชุดคำสั่งสคริปต์ \ คำสั่ง]
@ = "H: \\ BATCH_FILE_PATH \\ context-batch.bat \"% V \ ""

คุณไม่ต้องการ"Icon"="%SystemRoot%\\System32\\shell32.dll,71"เส้น มันเพียงเพิ่มไอคอนในเมนูบริบทของคุณที่มีลักษณะดังนี้:

หน้าต่างไอคอนเมนูบริบท


ขอบคุณ! คุณรู้วิธีแสดงเมนูบริบทนี้เมื่อฉันคลิกขวาที่พื้นที่ว่างในโฟลเดอร์ปัจจุบัน (ไม่เฉพาะเมื่อฉันคลิกที่โฟลเดอร์เอง)
Tom Brito

@TomBrito โปรดดูการแก้ไขล่าสุดของฉัน
Vinayak

@Tom Brito: การแก้ไขเมนูบริบทพื้นที่ว่างดูเหมือนว่าจะตอบที่นี่: stackoverflow.com/questions/4902041//
kreemoweet

@ kreemoweet ขอบคุณสำหรับการเชื่อมโยง! แต่ผมพบเกี่ยวกับเรื่องนี้โดยการวิเคราะห์แก้ไขเมนูบริบท
Vinayak

@ kreemoweet ฉันเปลี่ยนสตริงพา ธ สำหรับDirectory\Backgroundรวม%Vเป็นที่จะส่งไดเรกทอรีปัจจุบันไปยังสคริปต์ อย่างไรก็ตามฉันไม่แน่ใจจริงๆว่ามันหมายถึงอะไร %Wดูเหมือนว่าจะทำงานเช่นกัน
Vinayak

7

ฉันจะแนะนำDefault Programs Editorสำหรับงานนี้ เป็นทั้งผู้ใช้ที่เป็นมิตรและปลอดภัยกว่าการแก้ไขรีจิสตรีโดยตรง

เลือกเมนูบริบท ป้อนคำอธิบายรูปภาพที่นี่

เลือกส่วนขยายที่คุณต้องการเปลี่ยน ป้อนคำอธิบายรูปภาพที่นี่

เลือกเพิ่ม ... ป้อนคำอธิบายรูปภาพที่นี่

ตั้งชื่อคำสั่งของคุณเรียกดูไฟล์แบตช์และเลือกไอคอนเพื่อแสดงคำสั่งของคุณ ป้อนคำอธิบายรูปภาพที่นี่

บันทึกเมนูบริบทลงในรีจิสทรีและคุณก็พร้อมใช้งาน


ฉันต้องการเรียกใช้แบทช์ในโฟลเดอร์ไม่ใช่ประเภทไฟล์ ดูเหมือนว่ามันจะช่วยไม่ได้ ...
Tom Brito

สิ่งนี้ช่วยฉันขอบคุณสำหรับการแบ่งปัน
Daniel Kaplan

โปรแกรมที่ดี ขอบคุณ
ลอรีสเติร์น

0

โซลูชันทางเลือกที่ฉันใช้ใน Windows 10 คือการเพิ่มสคริปต์ไปยังโฟลเดอร์หนึ่งในตัวแปรพา ธ และเมื่อคุณอยู่ในลำดับการใช้ explorer:

  • ctrl + L - เพื่อเริ่มเขียนในแถบค้นหา

  • พิมพ์: cmd จากนั้นกด Enter - เพื่อเริ่ม cmd ในไดเรกทอรีปัจจุบัน

  • เรียกใช้สคริปต์ของคุณโดยพิมพ์ชื่อไฟล์


0

@Vinayak,

หากใช้ตัวเลือก "ส่งไปยัง" คุณอาจต้องเพิ่มบรรทัดcd /d %1ลงในจุดเริ่มต้นของคำสั่งแบตช์เพื่อให้ทำงานภายใต้เส้นทางเป้าหมาย

ไฟล์แบตช์ปัจจุบันของฉันมีลักษณะดังนี้:

@echo off
cd /d %1    
del *.txt
pause

ขอบคุณสำหรับความช่วยเหลือฉันบังเอิญพบสิ่งนี้ผ่าน google ในเวลาที่เหมาะสม :)


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

@ David โพสต์ดีเขาไม่มีโพสต์ของเขาเองในกระทู้นี้เพื่อแสดงความคิดเห็นก่อนโพสต์คำตอบของเขา .. และ (ถ้าเขาอยากจะพูดอะไรที่สมควรจะเป็นความคิดเห็น) เขาจะทำอย่างไรเพื่อแสดงความคิดเห็น? ไม่มีอะไรน่าจะเป็นไปได้
barlop

@barlop รู้รอบไม่ได้ใช้แทนความคิดเห็นอย่างที่คุณรู้ อีกทางเลือกหนึ่งคือเสนอการแก้ไขคำตอบอื่น ๆ ... แต่นั่นน่าจะถูกปฏิเสธ
DavidPostill

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

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