ชื่อแทนคำสั่งในพร้อมท์คำสั่ง?


18

ฉันจะสร้างสมนามคำสั่งใน 'พร้อมท์คำสั่งของ Windows อย่างที่ฉันต้องการได้bashอย่างไร

ฉันพบข้อมูลเกี่ยวกับdoskeyในฟอรัมดังนั้นฉันสามารถทำสิ่งที่ชอบ:

doskey ls=dir /b

... และตอนนี้คำสั่งก็lsทำตัวคล้ายlsกับยูนิกซ์อีกเล็กน้อย (ฉันพิมพ์lsบ่อย ๆcmdมันไม่ตลกเลย)

แต่ฉันจะทำให้เรื่องนี้ติดระหว่างเซสชันได้อย่างไร cmd.exeมันจะหายไปในครั้งต่อไปที่ผมเปิด (มีบางอย่างเช่น.bash_profile)


ขออภัยที่จะทำให้มันเป็น offtopic แต่คุณสามารถได้รับประโยชน์จากการติดตั้งสำเนา cygwin และมีเครื่องมือ unix ทั้งหมดที่ฝ่ามือของคุณ
bubu

ใช่ฉันต้องการ แต่ฉันไม่คิดว่านั่นเป็นตัวเลือก (และอาจทำงานได้มากกว่าที่คุ้มค่า) เครื่องหลักของฉันคือ Linux และ OS X - ฉันแค่ทดสอบโปรแกรมบางอย่างบน Windows ในตอนนี้
Benjamin Oakes

1
ไม่มีอะไรให้ทำมากนัก cygwin.com/setup.exeคือทั้งหมดที่คุณต้องติดตั้ง เพียงดาวน์โหลดและคลิกถัดไป มันมีทั้งหมดและเรียบง่ายมาก มีไม่มากในการกำหนดค่าอย่างใดอย่างหนึ่ง
bubu

หืมม…ฉันจะลองดู เครื่องมีปัญหามากมายอยู่แล้วแม้ว่า ... ;)
Benjamin Oakes

4
นอกเสียจาก MS-DOS ของคุณเป็นรุ่น 6.22 หรือน้อยกว่าคุณจะไม่ได้ใช้งาน DOS โดยการกล่าวถึงcmd.exeของคุณฉันถือว่าคุณกำลังพูดถึงเชลล์คำสั่งพื้นฐาน WinNT / 2k / XP / etc
ต้มตุ๋น quixote

คำตอบ:


0

cygwin สามารถใช้ในกรณีนี้ได้แม้ว่านี่จะไม่ใช่คำตอบที่ตรงประเด็น

http://www.cygwin.com/
ดาวน์โหลดCygWin : http://cygwin.com/setup.exe

หากต้องการเข้าถึงได้อย่างง่ายดายใน windows คุณสามารถใส่ c: \ cygwin \ bin ในเส้นทางของคุณ

โปรดทราบว่ามีคำสั่งบางอย่างที่ขัดแย้งกับซอฟต์แวร์ windows ซึ่งไม่เทียบเท่าเช่น find (1) vs find.exe - find (1) แสดงรายการไฟล์และไดเรกทอรีย่อยทั้งหมดในขณะที่ find.exe ทำงานเช่น grep

อีกทางเลือกหนึ่งคือการเข้าถึง

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun หรือ HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

เช็คเอาท์

 cmd.exe / 
สำหรับรายละเอียดเพิ่มเติม


อืม ... ดูเหมือนว่าฉันจะไม่ใช้เส้นทาง Windows ของฉันเลย ... ฉันจะต้องลองใหม่อีกครั้งในภายหลัง (ไม่เคยใช้ cygwin อย่างจริงจังมาก่อน) ขอขอบคุณสำหรับความช่วยเหลือของคุณ
Benjamin Oakes

การเพิ่มเส้นทาง cygwin ลงในตัวแปรสภาพแวดล้อมของเส้นทางหน้าต่างช่วยให้คุณสามารถใช้เครื่องมือในสภาพแวดล้อมของ cygwin ใน cmd.exe; เพิ่งทราบว่ามี caveats เช่น find.exe clashes พร้อมคำสั่ง find ที่จัดทำโดย cygwin
bubu

ทำไมต้อง undervote ฉันไม่มีความคิด
bubu

34

มันค่อนข้างง่ายในการตั้งค่านามแฝงถาวรในพรอมต์คำสั่ง Windows โดยใช้@DOSKEYคำสั่งและHKCU\Software\Microsoft\Command Processorตัวเลือก Autorun

คำแนะนำทีละขั้นตอนด่วน:

  1. Alias.batสร้างไฟล์ชุดใหม่เรียกว่า คัดลอก / วางข้อความด้านล่าง เคล็ดลับ:ฉันขอแนะนำให้สร้างC:\Binโฟลเดอร์สำหรับเครื่องมือบรรทัดคำสั่งทั้งหมดของคุณ
  2. HKEY_CURRENT_USER\Software\Microsoft\Command Processorเปิดลงทะเบียน
  3. เพิ่มชื่อค่าสตริงAutorunและตั้งค่าเป็นพา ธ สัมบูรณ์ของAlias.batไฟล์
  4. เสร็จสิ้น

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

เนื้อหาของAlias.bat

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

ตอนนี้คุณสามารถพิมพ์alias(เช่นDOSKEY /MACROS) เพื่อดูรายการ aliases / macros ปัจจุบัน

หากต้องการเพิ่มชื่อแทนใหม่สำหรับเซสชันปัจจุบันเท่านั้นที่คุณสามารถalias name=commandใช้ได้


1
ง่ายและง่ายต่อการอัปเดตเมื่อตั้งค่าฉันชอบอันนี้มาก!
Urda

น่าเสียดายที่ฉันหยุดใช้นามแฝงเหล่านี้เนื่องจาก@DOSKEYคำสั่งทำให้เกิดข้อผิดพลาดเมื่อออกจาก Autodesk Maya 2010 อาจมีการแก้ไขเช่นการตรวจสอบว่ากระบวนการหลักเป็น Maya แต่ฉันไม่ได้ใช้เวลาตรวจสอบ
Dennis

9

เรียงจากนอกหัวข้อ -

ใช้ PowerShell แทนcmd.exeบรรทัดคำสั่ง ข่าวดีก็คือ PowerShell มีคุณสมบัติเทียบเท่า.bash_profileและทำงานเหมือนกับcmd.exeบรรทัดคำสั่ง มันมาพร้อมกับคุณสมบัติการสร้างนามแฝงในตัว ข่าวดีก็คือว่ามีช่วงของการเรียนรู้เล็กน้อยถ้าคุณต้องการทำอะไรที่ซับซ้อนกว่าcmd.exeคำสั่งง่ายๆ

โดยวิธีการที่lsถูกกำหนดให้เป็นนามแฝงของdirขวาออกจากกล่อง


ทำไมไม่มีใครบอกให้ฉันใช้ power-shell ก่อน? มันดีกว่าหลายอย่างมาก
Andres

3

มีรายการรีจิสทรีที่ HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunให้คุณเรียกใช้คำสั่งเมื่อคุณเริ่มพรอมต์คำสั่งได้ ซึ่งรวมถึงไฟล์แบตช์


คุณอาจต้องการชี้ไปที่ Processor \ AutoRun HKEY_CURRENT_USER \ Software \ Microsoft \ Command เนื่องจากผู้อื่นจะไม่มี ID ผู้ใช้เดียวกันกับคุณ
bubu

@bubu: โอ้จริงมากขอโทษ ฉันพบว่าด้วยการค้นหารีจิสตรีฉันไม่คิด
Phoshi

1

ฉันแนะนำให้ติดตั้งคำสั่งเหล่านี้ในเวอร์ชัน dos โดยตรงจากลิงค์นี้

เรียบง่ายน้ำหนักเบามีประสิทธิภาพมาใช้ในขณะนี้ทำให้ฉันมีความสุข! Cygwin ค่อนข้างใหญ่สำหรับสิ่งจำเป็นที่ฉันต้องการ


0

ลองวางใน autoexec.bat ฉันไม่แน่ใจคุณจะต้องลอง วาง autoexec.bat เองใน C: \


ดูเหมือนจะใช้งานไม่ได้ ...
Benjamin Oakes


0

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

ฉันพบสิ่งนี้ด้วยวิธีการเพิ่มนามแฝง / คำสั่ง DOS ใหม่และสร้างแป้นพิมพ์ลัดสำหรับผู้ดูแลระบบ DOSมันใช้งานได้ดีมันควรจะทำงานได้บน 98-7 (ระบบนับเลขตลก แต่นี่เป็นหน้าต่าง) ฉันหวังว่าจะช่วยให้ผู้ที่อยู่ในหัวข้อนี้และผู้ที่ Google ส่งด้วยวิธีนี้

วิธีนี้ไม่ง่ายเหมือนนามแฝงและไม่เป็น doskey เมื่อติดตั้งแล้วสิ่งนี้ก็เป็นความพยายามเดียวกัน

ฉันจะเพิ่มส่วนนี้ของการผสานกับคำตอบของ Dennis Williamson ดีกว่ามาก คุณสามารถมีสภาพแวดล้อมของเชลล์สำหรับแอพพลิเคชั่นเดียวกันหลายเวอร์ชันเช่น php 4 สำหรับสคริปต์เก่าและ php 5 สำหรับเซิร์ฟเวอร์ทดสอบของคุณ

อย่างไรก็ตามสิ่งนี้ได้ผลดีกว่ามากสำหรับฉัน


0

การแก้ไขโดยการตั้งค่าสภาพแวดล้อม PATH

สร้างไฟล์ ls.c

ใส่รหัสต่อไปนี้

int main()
{
system("dir /b");
return 0;
}

เป็น ls.c และรวบรวมไฟล์:

$gcc ls.c -o ls

ไฟล์ปฏิบัติการls.exeถูกสร้างขึ้น

สร้างไดเรกทอรีตั้งชื่อเป็นcmdline_tools

$mkdir cmdline_tools

คัดลอกls.exeไปยังไดเรกทอรี

กำหนดเส้นทางของไดเรกทอรีในสภาพแวดล้อมของเส้นทาง [คัดลอกตำแหน่งของไดเรกทอรีและวางในเส้นทาง]

C:/cmdline_tools

เปิด cmd.exe ของคุณแล้วพิมพ์

$ LS

มันทำงานเป็นคำสั่ง dir คุณสามารถทำคำสั่งอื่นด้วยวิธีเดียวกันได้ ถ้าไม่บอกให้เรารู้


0

CMD ที่มีนามแฝง / ฟังก์ชั่นจาก doskey และ bashrc (จาก cygwin> bash) การสแลชข้างหน้ายังทำงานเป็น cmd (win7 เป็นต้นไป)

  1. สร้าง shorcut เป็น cmd เพื่อใช้ cmdrc.cmd

    cmd -a "/ k% HOME% \ cmdrc.cmd c: \"

2 C:> cat% HOME% / cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.