เก็บประวัติคำสั่ง cmd.exe ระหว่างเซสชันหรือไม่


คำตอบ:


22

สลับไปใช้ PowerShell และทำตามคำแนะนำที่ไซต์ต่อไปนี้เพื่อเปิดใช้งานประวัติ:

http://blogs.msdn.com/b/powershell/archive/2006/07/01/perserving-command-history-across-sessions.aspx

อีกวิธีหนึ่งใน cmd.exe คุณสามารถใช้ "doskey / history" ที่ส่วนท้ายของเซสชันเพื่อแสดงสิ่งที่คุณพิมพ์ในเซสชันนั้น แต่ไม่มีวิธีใดที่จะโหลดลงในเซสชันถัดไป


6
ฉันลังเลที่จะ +1 สิ่งนี้เพราะ "การเปลี่ยนไปใช้ PowerShell" นั้นไม่ได้ง่ายอย่างที่คิดเพราะมันขึ้นอยู่กับว่าคุณใช้คอนโซลแบบไหน แต่ข้อมูลนั้นแม่นยำมาก soooooooooo;)
Shinrai

2
ตกลง ฉันลังเลที่จะวางมันลง แต่มันเป็นคำตอบเดียวที่ฉันสามารถหาได้ ฉันพยายามทำให้บางสิ่งคล้ายกันเกิดขึ้นบนเวิร์กสเตชันที่ฉันเคยมีมา แต่มันไม่มีกลไกประวัติถาวรสำหรับ cmd.exe :-(
Hyppy

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

ควรสังเกตว่าคำสั่งบางคำสั่งที่ทำงานใน cmd ไม่ทำงานเหมือนกันใน PowerShell เช่น mvn ติดตั้ง `-Dmaven.test.skip = true จะต้องใช้ backtick ดังที่แสดงก่อนหน้าแดช
Drenai

62

ฉันพบวิธีการสองวิธีไม่ต้องการเปลี่ยนเป็น PowerShell

  1. ติดตั้งClinkซึ่งปรับปรุงcmd.exeด้วยประวัติที่ถาวรและอีกมากมาย เพียงติดตั้งแล้วเปิดcmdตามปกติ

  2. ติดตั้งทีซีซี / LEcmd.exeรุ่นฟรีซึ่งเป็นโปรแกรมที่แยกจากกันอีกครั้งให้เป็นรุ่นที่เพิ่มขึ้นของ


5
ฉันค่อนข้างจะวิตกกับการแทนที่ทั้งระบบcmd.exeแต่เป็นคำตอบที่ดีและเสียงกริ๊กก็รองรับโหมดการฉีดเช่นกัน
Lorenz Lo Sauer

4
ว้าวเสียงกริ๊กนั้นวิเศษมาก
Chris Weber

4
เสียงกริ๊กที่ยอดเยี่ยม แทนที่cmdด้วยมันไม่มีปัญหามีความสุขมากกับมัน
พันเอก Panic

2
เสียงกริ๊กเป็นที่น่าอัศจรรย์!
Hoang Huynh

3
นี่ควรเป็นคำตอบที่ยอมรับได้ เพราะนี่คือสิ่งที่ถามด้วยคำถาม .. !! สิ่งนี้ดีที่สุดแทนที่จะใช้แอปพลิเคชันทางเลือกอื่น
Samitha Chathuranga

12

การบันทึกประวัติเป็นกระบวนการทำงานขนาดเล็ก - นี่เป็นวิธี "หนัก" น้อยกว่าในการทำเช่นนี้ (ไม่มี libs ภายนอก)

สร้างไฟล์ bat / cmd เพื่อตั้งค่าประวัติของคุณในกรณีนี้ฉันเรียกมันว่า MyEnvironment.cmd:

doskey save=doskey /history $g$g C:\CmdHistory.log
doskey quit=doskey /history $g$g C:\CmdHistory.log $T exit
doskey history=find /I "$*" C:\CmdHistory.log
cls

จากนั้นเรียกใช้จาก "Start-> Run" (คุณสามารถตั้งค่านามแฝงสำหรับสิ่งนี้ได้เช่นกัน):

cmd.exe /K C:\MyEnvironment.cmd

ทุกครั้งที่ฉันปิดเซสชันฉันกดปุ่ม "ออก" - หรือถ้าฉันกลัวที่จะสูญเสียช่วงกลางประวัติศาสตร์ฉันจะกด "บันทึก" ถ้าฉันต้องการ grep สำหรับบางอย่างในประวัติศาสตร์ฉันแค่กดปุ่ม "history KEYWORD"


ตามความคิดเห็นของ @dave_thompson_085 AutoRunคุณลักษณะนี้จะทำงานได้ดีหากคุณไม่ต้องการใช้/Kสวิตช์ หากคุณตั้งค่าคีย์รีจิสทรีอย่างถูกต้อง.cmdหรือ.batไม่จำเป็นต้องอยู่%AppData%ก็อาจอยู่ในตำแหน่งเดียวกับที่มันมีอยู่แล้ว

หากคุณใช้%AppData%ตำแหน่งโปรดทราบว่า cmd อาจจะมองหาไฟล์แบทช์ของคุณในโฟลเดอร์ "Roaming" (แทนที่จะเป็นรูทของ AppData)

ข้อมูลเพิ่มเติมเกี่ยวกับAutoRunคุณสมบัติ CMD: https://superuser.com/a/302553/333316


อะไร$gและ$tมีไว้เพื่ออะไร?

@ Chinggis6 $gแทรก a >และ$tเป็นตัวคั่นคำสั่ง
Superole

@ Superole ah ok, g reater กว่าและt erminate แต่ทำไมไม่ใช้>และ&&ตัวอักษรโดยตรงในนามแฝง doskey?

@ Chinggis6 เพราะนั่นจะทำให้คำสั่งสร้างนามแฝงแตก จากนั้นตัวแปลคำสั่งจะถือว่าคุณหมายถึง: เรียกใช้งานครั้งแรกdoskey quit=doskey /historyและบันทึกผลลัพธ์ของการสร้างแมโครใน logfile (ไม่ว่าอะไรหรือข้อผิดพลาด) ปิดหน้าต่างถัดไป (ทิ้งทุกอย่าง) - คุณสามารถหลบหนีตัวละครเหล่านั้นด้วยความ^คิดแทน ชอบ^>^>และ^&( ... และใช่คุณต้องการเพียงหนึ่งเครื่องหมาย)
Superole

1
แทนที่จะชัดเจน/kสามารถใช้AutoRun superuser.com/a/302553/333316
dave_thompson_085

2

ผมใช้Cygwin นอกจากนี้ยังมีฟังก์ชันการทำงานอื่น ๆ ที่ Linux มี แต่ Windows ไม่

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