簡體   English   中英

使用其他批處理文件停止批處理文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM