Apakah ada sejarah CMD global yang persisten?

99

Kadang-kadang saya lupa bagaimana sintaks yang tepat dari perintah CMD terlihat dan kemudian saya ingin mencari sejarah CMD saya sendiri. Jelas, dalam sesi yang sama, Anda dapat menjelajahinya dengan tombol panah atas dan bawah, tetapi bagaimana dengan riwayat sesi CMD sebelumnya? Apakah ada file, log yang sejarahnya dituliskan atau apakah semuanya menuju ke Nirvana digital?

Terima kasih!

raoulsson
sumber
Anda dapat membajak perintah keluar untuk secara otomatis menyimpan log sebelum keluar: doskey exit=doskey /history ^>^> C:\path\to\cmdhistory.log $T exit $*tetapi Anda harus mencari cara untuk mengeksekusi ini secara otomatis pada setiap sesi prompt perintah startup. PS: Pastikan path file log dapat ditulisi. C:\ tidak dapat ditulisi untuk prompt perintah non-admin.
ADTC
@ADTC: AutoRun harus menangani 'setiap startup': superuser.com/a/302553/333316 atau stackoverflow.com/a/17405182/2868801
dave_thompson_085

Jawaban:

30

Tidak, riwayat prompt perintah Windows tidak dapat disimpan saat sesi berakhir.

Massimo
sumber
3
nyata? bagaimana kamu tahu ini Maaf untuk ditanyai Anda, saya kira Anda benar, tetapi bagaimana u bisa tahu kecuali u diprogram sialan itu;)
raoulsson
7
Oke, izinkan saya ulangi :-) Penerjemah perintah Windows ("cmd.exe") tidak memberikan dukungan apa pun untuk menyimpan / mengekspor / menyimpan riwayat, dari, jika ada, Microsoft tidak mendokumentasikannya dan tidak ada yang pernah bisa untuk menemukannya. Tentu saja Anda dapat mencoba mengatasinya, seperti disarankan Sean, tetapi tampaknya tidak ada dukungan bawaan untuk ini.
Massimo
18
Anda dapat menekan F7 untuk melihat daftar riwayat sesi saat ini.
jftuga
4
Sesi LANCAR adalah kata kunci di sini.
Massimo
3
Anda dapat melihat / menyimpan histori dengan menjalankan doskey.exe /history(di situlah pintasan F7 berasal, BTW) tetapi tidak ada cara untuk memuatnya kembali di sesi berikutnya.
Coderer
68

Tidak secara native tetapi periksa: http://mridgers.github.io/clink/ , membuat cmd.exe jauh lebih produktif. Mengutip fitur dari halaman proyek:

Powerful Bash-like line editing from GNU's Readline library.
Superior path completion (TAB).
Paste from clipboard (Ctrl-V).
Support for the completion of executables/commands, and environment variables.
Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
Improved command line history.
Persists across sessions.
Searchable (Ctrl-R and Ctrl-S).
History expansion (e.g. !!, !<string>, and !$).
Scriptable completion using Lua.
Robert Bak
sumber
3
denting menyelesaikan segalanya
Still.Tony
5
Adakah rencana untuk memasukkannya secara default di Windows? : D
Jaime Hablutzel
Bisakah Anda mengatur ~/.inputrckapan menggunakan denting? (dan tahukah Anda apakah itu dapat digunakan Konsol atau apa?)
Mike HR
Rupanya, lihat doc github.com/mridgers/clink/blob/master/docs/clink.md .
Baris Demiray
... kecuali alias. clinkmembenci doskey; lupakan semua alias bertahun-tahun Anda dan ditugaskan dengan cermat. itu sebabnya saya berhenti untuk menggunakannya. meskipun saya kehilangan semua fitur.
15

Massimo benar bahwa riwayat prompt perintah Anda tidak bertahan di seluruh sesi. Anda bisa mengambil ini secara manual sebelum menutup prompt Anda dengan mengetikkan doskey / history> history.txt

Atau ... Anda bisa menggunakan PowerShell sebagai prompt CMD Anda, dan ikuti posting ini untuk mempertahankan riwayat Anda di seluruh sesi.

Sean Earp
sumber
11

Anda dapat menggunakan denting .

Clink menggabungkan shell Windows asli cmd.exe dengan fitur pengeditan baris perintah yang kuat dari pustaka GNU Readline, yang menyediakan kemampuan penyelesaian, sejarah, dan pengeditan baris yang kaya.

Cara termudah untuk menginstal denting menggunakan cokelat . Setelah Anda menginstal cokelat, Anda dapat menginstal denting dengan mengetik

choco install clink

Mulai dari waktu berikutnya Anda memulai cmd.exe, harus menyimpan riwayat di seluruh sesi.

Joji Antony
sumber
Akhirnya memutuskan untuk Chocolateymencoba karena posting ini. Instalasi semudah brewdi macOS. Dan sekarang saya memiliki command prompt Bash-like di Windows!
TranslucentCloud
6

Dimungkinkan untuk menyimpan riwayat saat ini ke file,

`$ doskey /history > somefile.txt`

Tapi sepertinya tidak ada cara untuk memuatnya kembali sebagai sejarah. Mungkin hanya menggunakan argumen baris perintah untuk memuat dan mengeksekusi semua baris,

cmd.exe /K somefile.txt

, apa yang bisa berguna untuk memuat daftar makro doskey. Doa ini dapat dimasukkan dalam pintasan sehingga Anda tidak perlu mengetiknya setiap kali; referensi ini memiliki beberapa info tambahan tentang pendekatan ini .

Ada pertanyaan serupa tentang Superuser yang membawa beberapa alternatif, termasuk denting , seperti yang disarankan oleh @RobertBak.

mMontu
sumber
Hmm, untuk memuatnya kembali ke dalam sejarah, bukankah Anda hanya perlu menyimpannya ke file .bat dan menjalankannya?
Pacerier
1
@ Peracerier menjalankan perintah lagi pasti akan memasukkannya kembali ke dalam sejarah, tetapi kemungkinan akan memiliki efek samping yang besar. Bayangkan Anda menghapus beberapa file melalui shell dan kemudian membuatnya kembali di luar shell melalui proses yang panjang dan menyakitkan. Memuat ulang riwayat melalui prosedur Anda secara tak terduga akan menghapus file lagi.
mMontu
@Pacerier Anda menyadari "jalankan itu" berarti mengeksekusi semua perintah itu, bukan? Ini tidak hanya memuat mereka ke dalam sejarah, tetapi sebenarnya membiarkan mereka memiliki beberapa efek pada sistem Anda.
ADTC
1

Command History: Untuk mengaktifkan histori perintah (yang dapat diakses menggunakan tombol panah atas dan bawah) cukup jalankan doskey pada prompt perintah. Misalnya, untuk membuat sejarah perintah 100 elemen:

doskey /listsize=100

ref: https://users.cs.jmu.edu/bernstdh/web/common/help/ntshell.php

Moataz AL Dawood
sumber
3
Itu sama sekali tidak menjawab pertanyaan ??
Chopper3
1
Tidak berfungsi di Windows 10.
TranslucentCloud
1

denting bagus dan penulis menerbitkan paket cokelat di setiap rilis, namun saya sarankan DeepBlueCLI.

Anda dapat menggunakan https://github.com/sans-blue-team/DeepBlueCLI untuk mengatur Windows Security Event ID 4688.

Untuk PowerShell, DeepBlueCLI juga menggunakan pencatatan modul (PowerShell event 4013) dan pencatatan blok skrip (4104). Itu tidak menggunakan transkripsi.

Manfaat tambahan adalah bahwa ia mencatat hash dari baris perintah exe di log peristiwa AppLocker. Sumber: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing

Selain itu, karena solusi ini menggunakan infrastruktur Windows Event Log, Anda dapat menanyakannya melalui WMI atau PowerShell Get-EventLog. Dengan denting, Anda harus mempelajari alat lain untuk mendeteksi pola perilaku sistem atau jaringan.

John Zabroski
sumber
1
peristiwa 4688 adalah kuncinya, dan itu adalah pusat toko bagaimana Windows merekam semua perintah yang dieksekusi. semua alat lain hanya membaca mencari acara ini. Terima kasih. Tetapi secara default tidak diaktifkan: itprotoday.com/strategy/…
Peter Teoh