Windowsでは、レジストリキーHKEY_CURRENT_USER\Software\Microsoft\Command Processor
に値autorun
を作成し、それをecho Hello from autorun
に設定すると、cmd.exeを呼び出すと、最初にその行が実行されます。
Cmd.exeを閉じるときに実行する同等のautoexit
のような値はありますか?
autoexit, autoclose, autoquit, exit, onexit, onquit
とquit
を試しましたが運がありませんでした。
私が達成したいのは、(架空の)autoexit
レジストリ値をcmd.exe
に設定して、setx _LAST_DIR "%cd%"
の終了時に現在のディレクトリを保存することです。これにより、次の呼び出しでそれを呼び出すことができます。 cd "%_LAST_DIR%"
またはCommand Prompt Last Dir.lnk
入力ボックスがStart in
に設定された%_LAST_DIR%
ファイル内。
私の現在の解決策は、バッチファイルをPATH
、myexit.cmd
に置くことです。
@setx _LAST_DIR "%CD%"
@exit
ディレクトリを保存したい場合は、exitではなく呼び出すことを忘れないでください。
あなたがやろうとしていることは、実際にはあなたが求めていることを必要とせず、提供された回避策では機能しないので、これを2つの部分に分けました。
次のバッチファイルを作成します。
@CD /D %*
@>nul setx _LAST_DIR "%CD%"
AutoRunを次のように設定します。
CD /D %_LAST_DIR%&doskey cd=@ECHO off$T<FILENAME> $*$T@ECHO on
ここで、<FILENAME>
は、作成したバッチファイルへのフルパスです。または、PATH
変数にリストされているディレクトリにバッチファイルを作成して、ファイル名だけを使用できるようにします。
内訳:
&
文字で区切られた複数のコマンドであり、コマンドを順番に実行できます。CD /D %_LAST_DIR%
は、ディレクトリを_LAST_DIR
環境変数の内容に変更します。 /D
スイッチは、別のドライブ上のディレクトリに変更できるようにするために使用されます。doskey cd=@ECHO off$T<FILENAME> $*$T@ECHO on
は、いくつかのことを行うDOSKEY
マクロを作成します。doskey cd=
は、デフォルトのCDコマンドを置き換えるマクロを作成します$T
はDOSKEY
と同等の&
であり、複数のコマンドを区切るために使用されます。 $*
は%*
と同等のDOSKEY
であり、マクロに渡されるすべての引数を保持します。ECHO
をオフにし、ディレクトリを変更し、環境変数を設定してから、ECHO
をオンに戻します。DOSKEY
マクロ内でバッチファイルを使用しているため、%CD%
変数を使用して、完全なディレクトリパスを指定し、エラーを説明できます。さらに読む:
この部分はあなたが望むことをしませんが、同様の検索用語を使用している他の人はそれが役に立つと思うかもしれません。
私の知る限り、このオプションは存在せず、 Microsoftのドキュメント には記載されていません。これが潜在的な回避策です。
警告:コマンドプロンプトの無限ループが開始される可能性があるため、理解できない場合はこのコードを使用しないでください。これは、あらゆる種類の実稼働環境で使用する前に、徹底的にテストする必要があります。
次のコードを使用してバッチファイルを作成し、AutoRunとして設定します。
@cls
@cmd /d
<exit commands here>
@exit
内訳:
@
文字は、コマンド自体を非表示にし、出力のみを表示します。これは、混乱を減らすためです。cls
は、Windowsのバージョンと著作権情報を含むヘッダーをクリアします。 両方のコンソールからクリアしたい場合は、次のコマンドをcmd /d /k
に置き換えることができます。@cmd /d
は、このコマンド内で新しい(子)コマンドプロンプトを開始し、選択したコマンドを実行できるように開いたままにします。 /D
スイッチは、コマンドプロンプトnotに自動実行を使用するように指示します。<exit commands here>
は、実行したいコマンドに置き換える必要があります。これにより、子コマンドPromptにローカルな環境変数または変数の変更にアクセスできなくなります。 SETX
でさえ、将来のコマンドプロンプトにのみ適用され、親コマンドプロンプトに戻されることはありません。注:コマンドプロンプトが異常終了した場合(ウィンドウの赤いXをクリックするか、タスクマネージャーでタスクを終了した場合)、コマンドは実行されません。終了コマンド。
さらに読む: