Simpan riwayat perintah cmd.exe di antara sesi?

75

Apakah ada cara untuk menjaga riwayat perintah cmd di antara sesi?

firefusion
sumber

Jawaban:

22

Beralih ke menggunakan PowerShell, dan ikuti instruksi di situs berikut untuk mengaktifkan riwayat:

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

Atau, di cmd.exe, Anda dapat menggunakan "doskey / history" di akhir sesi Anda untuk menunjukkan apa yang Anda ketikkan di sesi itu, tetapi tidak ada cara untuk benar-benar memuatnya ke sesi berikutnya.

Hipn
sumber
6
Saya ragu untuk memberi +1 pada ini karena "Beralih ke menggunakan PowerShell" tidak semudah kedengarannya tergantung pada apa jenis barang yang Anda gunakan untuk konsol, tetapi informasinya akurat soooooooooo;)
Shinrai
2
Sepakat. Saya ragu untuk meletakkannya tetapi itu satu-satunya jawaban nyata yang dapat saya temukan. Saya mencoba untuk mendapatkan sesuatu yang serupa terjadi di workstation yang saya miliki sebelumnya, tetapi tidak ada mekanisme sejarah persisten yang tersedia untuk cmd.exe :-(
Hyppy
Perhatikan bahwa ini akan menyimpan daftar perintah yang Anda ketikkan, tetapi ia TIDAK mengubah daftar perintah yang akan muncul ketika Anda menekan tombol atas pada keyboard. Dengan kata lain, itu tidak memengaruhi fungsionalitas "doskey".
Tandai
Harus dicatat bahwa beberapa perintah yang bekerja dalam cmd tidak berfungsi sama di PowerShell misalnya mvn instal `-Dmaven.test.skip = true akan membutuhkan backtick seperti yang ditunjukkan sebelum dasbor
Drenai
62

Saya telah menemukan 2 cara, yang keduanya tidak memerlukan peralihan ke PowerShell.

  1. Instal Clink , yang meningkatkan cmd.exedengan riwayat persisten dan banyak lagi. Instal saja dan kemudian buka cmdseperti biasa.

  2. Instal versi gratis TCC / LE , yang merupakan program terpisah, lagi-lagi menyediakan versi yang disempurnakan dari cmd.exe.

burung pipit
sumber
5
Saya sedikit khawatir terhadap penggantian seluruh sistem cmd.exetapi itu jawaban yang baik, dan denting juga mendukung mode injeksi.
Lorenz Lo Sauer
4
Wow, Clink luar biasa.
Chris Weber
4
Denting brilian. Digantikan cmddengan itu, tidak ada masalah, sangat senang dengannya.
Kolonel Panic
2
Denting luar biasa!
Hoang Huynh
3
Ini harus menjadi jawaban yang diterima. Karena inilah yang ditanyakan oleh pertanyaan .. !! Ini lebih baik daripada menggunakan aplikasi alternatif lainnya.
Samitha Chathuranga
12

Menyimpan riwayat adalah alur kerja kecil - inilah cara yang kurang "berat" untuk melakukan ini (tidak ada lib eksternal).

Buat file bat / cmd untuk mengatur riwayat Anda, dalam hal ini saya menyebutnya 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

Kemudian jalankan ini dari "Start-> Run" (Anda juga dapat mengatur alias untuk ini):

cmd.exe /K C:\MyEnvironment.cmd

Setiap kali saya menutup sesi saya menekan "berhenti" - atau jika saya takut kehilangan sejarah pertengahan sesi saya menekan "simpan". Jika saya ingin memahami sesuatu dalam sejarah, saya hanya menekan "history KEYWORD".


Per komentar @ dave_thompson_085, AutoRunfitur ini berfungsi dengan baik jika Anda tidak ingin menggunakan /Ksakelar. Jika Anda mengatur kunci Registry dengan benar, .cmdatau .battidak perlu berada di %AppData%, kunci tersebut dapat berada di lokasi yang sama seperti sebelumnya.

Jika Anda menggunakan %AppData%lokasi tersebut, ketahuilah bahwa cmd mungkin akan mencari file batch Anda di folder "Roaming" (bukan root AppData).

Info lebih lanjut tentang AutoRunfitur CMD: https://superuser.com/a/302553/333316

Coruscate5
sumber
Untuk apa $gdan $tuntuk apa?
@ Chinggis6 $gmenyisipkan >, dan $tmerupakan pemisah perintah.
Superole
@Superole ah ok, g reater daripada dan t erminate, tapi mengapa tidak menggunakan >dan &&karakter langsung di alias doskey?
@ Chinggis6 karena itu akan memecah perintah menciptakan alias. Kemudian interpreter perintah akan menganggap bahwa yang Anda maksudkan: pertama jalankan doskey quit=doskey /historydan simpan output dari penciptaan makro dalam file log (entah apa-apa atau kesalahan); selanjutnya tutup jendela (membuang semuanya). -Kamu bisa kabur dari karakter itu dengan ^gantinya, kurasa. Suka ^>^>dan ^&(... dan ya, Anda hanya perlu satu ampersand)
Superole
1
Alih-alih secara eksplisit /kdapat menggunakan AutoRun superuser.com/a/302553/333316
dave_thompson_085
2

Saya menggunakan cygwin . Ini juga menyediakan beberapa fungsi lain yang dimiliki Linux tetapi Windows tidak.

Harun
sumber