[英]Stop a batch file using another batch file?
我有一個批處理文件,它使用以下命令在新的cmd提示符上啟動新的批處理文件:
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"
在上面的代碼而不是taskkill
如果我想在命令提示符下使用windowtitle“c:\\ Windows \\ SYSTEM32 \\ cmd.exe - mybatch.bat”使用主批處理文件執行Ctrl + C. 可能嗎?
test.bat的
@echo off
title mybatchfile
echo ...do something
testkill.bat
Taskkill /FI "WINDOWTITLE eq mybatchfile"
testkill.bat會殺死test.bat
但你已經嘗試過了。
更新
無法從另一批次停止批次。 但是您可以運行批處理作為服務來設置進程名稱,然后您可以定義在啟動和停止時應該執行的操作。 此服務可以從批處理文件中刪除。
在這里看到我的答案
批處理文件中沒有“請做某事”的消息。 你將不得不模仿它,例如:
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"
我已經實現了SendKey.exe實用程序(Delphi控制台應用程序),它模擬按鍵,但它是內部應用程序的一部分。 我嘗試了以下命令,它工作正常。 應用程序使用keybd_event Win32調用。
SendKey.exe -wn“TestLoop.bat”-ks“{CTRL + C} Y {ENTER}”
您可以使用NirCmd發送我認為應該工作的按鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.