4

次のコマンドを使用して、新しいコマンド プロンプトで新しいバッチ ファイルを開始するバッチ ファイルがあります。

C:\Windows\System32\cmd.exe /c "start mybatch.bat"

プロセスは、mybatch.bat誰かが停止するまで実行を続けます。Ctrl+シグナルを使用してこのバッチ ファイルを閉じるCと、カバレッジ データを収集する操作が実行され、出力されます。ファイルを開始した後mybatch、親バッチ ファイルで他のプロセスを実行してから、ファイルを停止したいと考えていmybatchます。

taskkill親バッチファイルのコマンドを使用してプロセスを閉じるために使用してみました:

taskkill /fi "windowtitle eq c:\Windows\SYSTEM32\cmd.exe - mybatch.bat"

ここでの問題は、バッチ ファイルを強制的に停止して、手動でCtrl+を使用した場合に発生するカバレッジ プロセスを実行できないことです。C親バッチ ファイルを使用して mybatch ファイルを停止する方法について何か考えはありますか?

すべてがバッチファイルを使用して行われます。どんな助けでも大歓迎です。

メインのバッチ ファイルは次のようになります。

start mybatch.bat
REM do something like copying files, running tests, etc
taskkill /fi "windowtitle eq c:\Windows\SYSTEM32\cmd.exe - mybatch.bat"

上記のコードでは、メインのバッチ ファイルを使用して、windowtitle "c:\Windows\SYSTEM32\cmd.exe - mybatch.bat" を使用してコマンド プロンプトで+taskkillを実行したい場合に実行します。出来ますか?CtrlC

4

3 に答える 3

3

test.bat

@echo off
title mybatchfile
echo ...do something

testkill.bat

Taskkill /FI "WINDOWTITLE eq mybatchfile"

testkill.bat は test.bat を強制終了します

しかし、あなたはすでにそれを試しました。

更新しました

別のバッチからバッチを停止することはできません。ただし、バッチをサービスとして実行してプロセス名を設定し、開始時と停止時に何をすべきかを定義できます。このサービスは、バッチ ファイルから強制終了できます。

ここで私の答えを見てください

于 2014-11-26T08:47:40.063 に答える
1

バッチファイルに対する「何かしてください」というメッセージのようなものはありません。たとえば、次のようにエミュレートする必要があります。

REM mybatch.bat
:loop
REM do useful things
if not exist "c:\triggerfile.tmp" goto :loop

del "c:\triggerfile.tmp"
REM do "postprocessing"
exit

メインのbatファイルではtaskkillなくecho x>"c:\triggerfile.tmp"

于 2014-11-26T07:10:38.530 に答える
0

キーの押下をエミュレートする SendKey.exe ユーティリティ (Delphi コンソール アプリ) を実装しましたが、これは内部アプリケーションの一部です。次のコマンドを試してみましたが、うまくいきました。アプリは keybd_event Win32 呼び出しを使用します。

SendKey.exe -wn "TestLoop.bat" -ks "{CTRL+C}Y{ENTER}"

NirCmdを使用して、キープレスを送信することができます。

于 2014-11-29T20:16:53.803 に答える