cmdコマンドは、コマンドプロンプトの新しいインスタンスを開始するコマンドです。
コマンドプロンプト上で
cmd /k a.bat
というように引数で
/k
オプションを指定すると、新しいインスタンスを開始してa.batを実行しますがインスタンスは終了しません。制御は新しいインスタンスに移ります。
cmd /c a.bat
というように引数で
/c
オプションを指定すると、新しいインスタンスを開始してa.batを実行してインスタンスを終了します。制御は元のコマンドプロンプトに戻ります。
/k(/c)
オプションを指定した場合、/k(/c)オプションとその後ろのプログラムまたはコマンドの間に他のオプションを指定するとエラーになりますので注意してください。以下のようなコマンドはエラーになります。
cmd /k /q c:\a.bat
コマンドプロンプト上でこのコマンドを実行すると、インスタンスを終了する、しない、というのが理解しにくいと思います。
ですので[スタート]-[ファイル名を指定して実行]を選択すると下図のボックスが出てくるので、そのボックスの名前欄に、
cmd /k c:\a.bat
cmd /c c:\a.bat
というように各々入力してみます。c:\配下にa.batファイルが存在すると仮定しています。
ファイル名を指定して実行
/k
オプションを指定した場合はa.batが実行された後コマンドプロンプトが終了されません。
ですが
/c
オプションを指定した場合はa.batが実行された後コマンドプロンプトが終了されます。
これがインスタンスを終了する、しない、という違いです。
a.bat実行時のechoをオフにしたい場合は、
cmd /q /k a.bat
というように引数で
/q
オプションを指定します。