เรียกใช้งานคำสั่งอัตโนมัติเมื่อเปิดพรอมต์คำสั่ง


21

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

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

doskey ls=dir

สิ่งนี้สามารถทำได้?



3
Windows XP ไม่มี DOS
user1686

@ KContreau ไม่หยุดหย่อน ดังนั้นมันจะเป็นเหตุผลที่ชุดของฉันไม่ได้บันทึกการย่อย doskey หลังจากคำสั่ง "เริ่มต้น / แยก" แต่เฉพาะกับ "cmd / k" หรือ "cmd / c" ...
kokbira

เราต้องเปลี่ยนชื่อคำถามหรือไม่หลังจากรุ่น "การชี้แจง"
kokbira

1
@KCotreau: เทคนิคก็เป็นส่วนหนึ่งของคอนโซล Win32 cmd.exeระบบย่อยไม่เฉพาะ
user1686

คำตอบ:


9

หากคุณต้องการให้มันโหลดตอนบูทแทนการเข้าสู่ระบบหากคุณมี XP Pro (โฮม XP ไม่รวม gpedit.msc) ให้ทำดังนี้

Start> Run> gpedit.msc

และกด Enter จากนั้นเรียกใช้ gpupdate / force จากบรรทัดคำสั่ง

ไปที่

การกำหนดค่าคอมพิวเตอร์> การตั้งค่า Windows> สคริปต์> การเริ่มต้น

และเพิ่มที่ตั้งลงในสคริปต์

คุณยังสามารถทำสิ่งนี้เพื่อการเข้าสู่ระบบของผู้ใช้ภายใต้

การกำหนดค่าผู้ใช้> การตั้งค่า Windows> สคริปต์> การเริ่มต้น

หากคุณมี XP Home คุณสามารถคัดลอกสคริปต์ไปที่:

C: \ Windows \ System32 \ GroupPolicy \ เครื่อง \ Scripts \ Startup

สำหรับการโหลดใน bootup หรือ:

C: \ Windows \ System32 \ GroupPolicy \ User \ Scripts \ การเข้าสู่ระบบ

สำหรับการโหลดพวกเขาสำหรับผู้ใช้ที่เข้าสู่ระบบ โฟลเดอร์ GroupPolicy ถูกซ่อนไว้


1
ฉันต้องการวิธีนี้เพื่อวางไว้ในโฟลเดอร์เริ่มต้น ทำให้มันคงที่มากขึ้น
Joe Taylor

1
@Joe Taylor ขอบคุณ พูดตามตรงฉันใช้เฉพาะโฟลเดอร์ Startup สำหรับสิ่งต่าง ๆ เช่นเริ่ม Outlook นี่เป็นวิธีมาตรฐานในการทำจากมุมมองการบริหารระบบ
KCotreau

@ KContreau โซลูชันของคุณมีประโยชน์มาก แต่ไม่ใช่สำหรับกรณีนั้น ฉันทดสอบแล้ว แต่มันไม่สามารถใช้งานได้สำหรับคำสั่งการแทนที่ doskey ...
kokbira

@kokbira คำถามเดิมคือ "จะรันสคริปต์เมื่อเริ่มต้นใน XP ได้อย่างไร" ซึ่งฉันคิดว่าฉันตอบถูกต้อง เขาแก้ไขและเพิ่มส่วน "ตัวอย่างและ doskey ls = dir" หลังจาก
KCotreau

1
@ KContreau คุณพูดถูกปัญหาคือชื่อของคำถามนี้ไม่ถูกต้อง ใน "การชี้แจง" เขาบอกว่าเขาต้องการ "เพื่อเรียกใช้คำสั่ง DOS บางอย่างเมื่อฉันเริ่มต้นพร้อมท์ DOS โดยส่วนใหญ่จะตั้งชื่อแทนบางอย่าง " ในการทำคำสั่งบางอย่างเมื่อ Windows เริ่มต้นวิธีการแก้ปัญหาของคุณก็โอเค แต่การเรียกใช้นามแฝงไม่ใช่
kokbira

47

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

  1. สร้างแบตช์ไฟล์ ( .cmd) ด้วยคำสั่งdoskeyของคุณใส่ไว้ใน Application Data

  2. กำหนดค่าให้เริ่มต้นโดยอัตโนมัติเมื่อคุณเปิดcmd การตั้งค่าอยู่ใน Registry:

    • สำคัญ: HKCU\SOFTWARE\Microsoft\Command Processor
    • ราคา: AutoRun
    • ประเภท: REG_EXPAND_SZ
    • ข้อมูล: "%AppData%\aliases.cmd"

1
นี่เป็นทางออกที่ยอดเยี่ยมสำหรับ Win2K Virtual OS ที่ฉันต้องการให้พรอมต์คำสั่งโหลดเส้นทางคอมไพเลอร์ของฉัน ความแตกต่างเพียงอย่างเดียวคือการใช้ REG_SZ แทนที่จะเป็น REG_EXPAND_SZ
James

นี่เป็นทางออกที่ดี มีวิธีใดที่จะระงับเอาต์พุตเริ่มต้นได้หรือไม่?
nburr

1
@Nickolas: เพียงแค่เปลี่ยนเส้นทางคำสั่งไปยัง NUL เช่นเคยหรือไม่
user1686

มันทำงานได้อย่างสวยงามอย่างไรก็ตามมันอาจรบกวนการรวบรวมทรัพยากรของ Windows (rc.exe) ทำให้เกิดข้อผิดพลาดเช่น "ระบบไม่สามารถหาเส้นทางที่ระบุได้" ดูVisual Studio เชลล์โครงการที่แยกไม่ได้รวบรวม
User5910

ฉันแก้ไขสิ่งนี้โดยการตรวจสอบการมีอยู่ของไฟล์ก่อน:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910

4

ล่ามคำสั่งที่แตกต่างกันจัดการนามแฝงคำสั่งในรูปแบบที่แตกต่างกัน

CMD ของ Microsoft ขึ้นอยู่กับระบบย่อยคอนโซล Win32 เพื่อให้กลไกการสร้างสมนามคำสั่ง doskeyคำสั่งจริงมีปฏิสัมพันธ์กับกระบวนการคอนโซลและมันก็เป็นคอนโซลของตัวเองที่มีชื่อแทน ดังนั้นนามแฝงต่อคอนโซลและสิ่งชั่วคราว

TCC / LE ของ JP Softwareจัดการนามแฝงเอง aliasคำสั่งช่วยให้หนึ่งในการดูและจัดการนามแฝงซึ่งมีทั้ง "ท้องถิ่น" หรือ "ระดับโลก" นามแฝงยังคงอยู่ชั่วคราว แต่เป็นส่วนตัวกับกระบวนการล่ามคำสั่งเดียวหรือใช้ร่วมกันระหว่างกระบวนการล่ามคำสั่งทั้งหมด (ในทุกคอนโซล)

เชลล์เช่นKorn shellในชุดยูทิลิตี้ SFUA - เครื่องมือที่ทำงานในระบบย่อยสำหรับแอพพลิเคชั่นที่ใช้ระบบปฏิบัติการ UNIXซึ่งมาในกล่องพร้อมกับ Windows 7 Ultimate edition และ Windows Server 2008 R2 (สำหรับ Windows XP สามารถดาวน์โหลดและติดตั้งได้บริการสำหรับ UNIX รุ่น 3.5 ) - และ Bourne Again shell จากcygwinจัดการนามแฝงในทำนองเดียวกัน นามแฝงเป็นแบบชั่วคราวและตามกระบวนการล่ามคำสั่ง

การโหลดชุดของชื่อแทนเริ่มต้นโดยอัตโนมัติจะแตกต่างกันไปตามล่ามคำสั่งด้วย

ในทุกกรณีหนึ่งคำสั่งที่จะตั้งชื่อแทนในสคริปต์บางประเภท

grawityได้รับแล้วหนึ่งในสองคีย์รีจิสทรีว่าสาเหตุของ Microsoft CMD เพื่อเรียกใช้คำสั่งในขณะที่มันจะเริ่มต้นขึ้น น่าเสียดายที่นี่เป็นกระบวนการล่ามต่อคำสั่งแม้ว่าจะมีการจัดเก็บนามแฝงต่อคอนโซลก็ตาม เริ่มตัวแปลคำสั่งรองจากตัวแปลเริ่มต้นและการเปลี่ยนนามแฝงเริ่มต้นด้วยตนเองจะถูกรีเซ็ต ทางเลือกที่อย่างน้อยทำการเริ่มต้นเพียงครั้งเดียวต่อคอนโซลคือการเพิ่ม/Kตัวเลือกและชื่อของสคริปต์คำสั่งที่เรียกdoskeyไปยังหางคำสั่งในทางลัดที่เริ่มล่ามคำสั่ง

TCC / LE ของ JP Software รันTCSTARTสคริปต์โดยอัตโนมัติเมื่อเริ่มต้น อีกครั้งนี่คือกระบวนการล่ามต่อคำสั่ง แต่ของ TCC นามแฝง "ท้องถิ่น" เป็นยังต่อกระบวนการแปลคำสั่งดังนั้นนี่คือสถานที่ที่เหมาะสมในการเริ่มต้นนามแฝงหากมีการจ้างนามแฝงท้องถิ่น สำหรับนามแฝงส่วนกลางให้สร้างทางลัดในStartupโฟลเดอร์ของคุณที่โหลดชื่อแทนจากไฟล์ (ด้วยalias /r) จากนั้นเรียกใช้shraliasคำสั่งเพื่อให้ยังคงมีอยู่หลังจากทางลัดนั้นเสร็จสิ้นการทำงาน

สำหรับเชลล์ Bourne Again และ Korn เพียงทำตามที่ต้องการกับเชลล์เหล่านี้บนแพลตฟอร์มอื่น ๆ ใช้aliasคำสั่งใน$HOME/.profileและ$HOME/.bashrcสคริปต์สำหรับเชลล์ Bourne Again และใช้aliasคำสั่งใน$HOME/.profile, ENV และ$HOME/.kshrcสคริปต์สำหรับ Korn เชลล์


2

คำตอบของ Gravity นั้นใช้งานได้ดีสำหรับฉัน

ฉันสร้างสคริปต์ shell-aliases.cmd ในโฟลเดอร์ Documents ของฉัน (บางแห่งฉันสามารถหาได้ในภายหลัง)

จากนั้นสร้างค่าสตริงที่ขยายได้ 'AutoRun' ในรีจิสตรีคีย์:

'ตัวประมวลผล HKEY_CURRENT_USER \ Software \ Microsoft \ Command'

ตั้งค่าเป็นพา ธ แบบเต็มไปยังไฟล์นามแฝง (Mine อยู่ใน 'C: \ Users \ Lee \ Documents \ shell-aliases.cmd')

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


0

มีหลายสถานที่ที่จะทำ แต่เมนูเริ่มต้น> โฟลเดอร์เริ่มต้นอาจเป็นวิธีที่ง่ายที่สุด

เรียกใช้ 'msconfig' และดูว่าโปรแกรมใดเริ่มทำงานและทำไม คุณสามารถเพิ่มโปรแกรมของคุณไปยังหนึ่งในรายการเหล่านั้น (ตัวอย่างเช่นในรีจิสทรี)


0

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

ดังนั้นวิธีอื่น ๆ (คุณสามารถรวมเข้าด้วยกันได้):

I. สร้างชุดและทางลัด:

  1. สร้างแบทช์ด้วยมาโครเหล่านี้และบันทึกลงในสถานที่ที่ทราบ (เช่น c: \ apps \ mycmd.bat)
  2. สร้างทางลัดในเดสก์ท็อป (หรือตำแหน่งที่คุณต้องการ) วาง "cmd / k" ไว้หน้าพา ธ (เช่น "cmd /kc:\apps\mycmd.bat")
  3. ดังนั้นคำสั่งทั้งหมดของคุณจะทำงานทุกครั้งที่คุณเปิดทางลัดนั้น

ครั้งที่สอง สร้างแบทช์และรายการในตัวแปรสภาพแวดล้อมของ PATH:

  1. สร้างแบทช์ด้วยมาโครเหล่านี้และบันทึกลงในสถานที่ที่ทราบ (เช่น c: \ apps \ mycmd.bat)
  2. ไปที่แผงควบคุม> ระบบ> การกำหนดค่าขั้นสูง> ขั้นสูง> ตัวแปรสภาพแวดล้อม
  3. ในรายการผู้ใช้หรือระบบค้นหาตัวแปรชื่อ PATH ดับเบิลคลิกที่มันและในตอนท้ายให้แทรก ";" และเส้นทางไปยัง BAT ของคุณ (เช่น "c: \ apps \" => "previous_string; c: \ apps \") จากนั้นคลิกตกลงและตกลง
  4. ดังนั้นเมื่อคุณใช้ cmd (หรือในไฟล์ BAT) เพียงแค่ใส่ชื่อ BAT ในพา ธ ที่สร้างขึ้น (เช่น "c: \ apps") เพื่อเรียกใช้คำสั่งของคุณ (เช่นพิมพ์ "myapps" เพื่อเรียกใช้คำสั่งทดแทนเหล่านั้น)

1
ฉันพยายาม "start / split" แต่มันบันทึกเฉพาะตัวแปรสภาพแวดล้อม (ไม่ใช่การแทนที่คำสั่ง doskey) ... คำสั่ง "set" นั้นใช้ได้กับ prompt ที่เปิดเท่านั้น แต่เราสามารถใช้ "setx" เพื่อบันทึกลงในระบบ หรือตัวแปรสภาพแวดล้อมของผู้ใช้ "ถาวร" ฉันไม่ทราบว่ามีวิธีบันทึกการแทนที่ doskey "ถาวร" ในระบบหรือสำหรับการเริ่มต้น Windows ทุกครั้งหรือไม่ ฉันไม่ชอบใช้วิธีการของฉัน ...
kokbira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.