セッション間で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
「PowerShellの使用への切り替え」は、コンソールを使用している種類によっては必ずしも簡単ではないため、これを+1することをためらいましたが、情報は正確ですsoooooooooo;)
Shinrai

2
同意した。私はそれを置くことをheしましたが、私が見つけることができる唯一の本当の答えです。以前持っていたワークステーションで同様のことをしようとしましたが、cmd.exeで利用できる永続的な履歴メカニズムはありません:-(
Hyppy

これにより、入力したコマンドのリストが保持されますが、キーボードのアップキーを押したときに表示されるコマンドのリストは変更されません。つまり、「doskey」機能には影響しません。
マーク

cmdで動作する一部のコマンドはPowerShellで同じように動作しないことに注意してください。たとえば、mvn install `-Dmaven.test.skip = trueでは、ダッシュの前に示すようにバックティックが必要になります
Drenai

62

2つの方法を見つけましたが、どちらもPowerShellに切り替える必要はありません。

  1. Clinkをインストールするcmd.exeと、永続的な履歴などが強化されます。ただインストールしてから、cmd通常どおりに開きます。

  2. TCC / LEの無料版をインストールします。これは別のプログラムであり、再び拡張版を提供しcmd.exeます。


5
私はシステム全体の置き換えに少し不安をcmd.exe感じていますが、それは良い答えであり、clinkは注入モードもサポートしています。
ローレンツロザウアー

4
うわー、クリンクは素晴らしいです。
クリスウェーバー

4
クリンクは素晴らしいです。cmdそれに置き換えられ、問題はありませんでした、非常に満足しています。
パニック大佐

2
クリンクはすごい!
ホアンフイン14年

3
これは受け入れられた答えであるはずです。これは質問によって尋ねられたものだからです。これは、他の代替アプリケーションを使用するよりも最適です。
サミタチャトゥランガ

12

履歴の保存は小さなワークフローです-これを行うための「重い」方法はここにあります(外部ライブラリはありません)。

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

次に、これを「スタート」->「実行」から実行します(このエイリアスも設定できます)。

cmd.exe /K C:\MyEnvironment.cmd

セッションを閉じるたびに「終了」を押すか、セッション中に履歴を失うことを恐れている場合は「保存」を押します。履歴内の何かをgrepしたい場合は、「history KEYWORD」を押すだけです。


@ dave_thompson_085のコメントによるとAutoRun/Kスイッチを使用したくない場合、この機能はうまく機能します。レジストリキーを正しく設定した場合、.cmdまたはにある.bat必要はありません%AppData%。既にある場所にあることができます。

%AppData%場所を使用する場合は、cmdが(AppDataルートではなく) "Roaming"フォルダーでバッチファイルを検索する可能性があることに注意してください。

AutoRunCMD機能の詳細:https : //superuser.com/a/302553/333316


$g$tするためのもの?

@ Chinggis6はを$g挿入し>$tコマンド区切り文字です。
Superole

@Superole ah ok、g reater than and t erminate、しかし、なぜdoskeyエイリアスで文字を直接使用>しないの&&ですか?

@ Chinggis6。エイリアスを作成するコマンドが壊れるからです。次に、コマンドインタープリターは次のことを想定します。最初にdoskey quit=doskey /historyマクロ作成の出力を実行し、ログファイルに保存します(何もまたはエラーメッセージがありません)。次にウィンドウを閉じます(すべてを破棄します)。- ^代わりに、これらの文字をエスケープすることもできます、と思います。同様に^>^>して^&(...はい、あなただけの1つのアンパサンドが必要)
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.