首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows .bat -启动同步运行到父进程的子进程,并在父进程运行时关闭。

Windows .bat -启动同步运行到父进程的子进程,并在父进程运行时关闭。
EN

Stack Overflow用户
提问于 2014-06-13 23:51:52
回答 1查看 7.5K关注 0票数 2

所以这可能是不可能的,但我还是会问

我有一个日志.bat脚本,用于收集应用程序的信息和使用时间。因此,我想要的是一个批处理文件,该文件要求用户提供一些基本信息,启动一个子进程或.bat文件,该文件允许用户输入更多信息,而父进程则启动并等待一个windows应用程序(例如notepad.exe)。然后,当用户关闭notepad.exe时,我希望父进程和子进程退出。

一般说来,这就是我迄今所拥有的;

代码语言:javascript
复制
@echo off

set someinfo=
set /p someinfo="Enter Some Info Please: "
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%b/%%a/%%c)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a:%%b)

:: Starting time and info
echo %someinfo%,%mytime%,%mydate% >> C:\Temp\MSuser.log 

:: This would be the child process for additional input 
start "Additional info" addinfo.bat 

::This is the software I want to start
start /Wait "" "C:\Program Files (x86)\notepad.exe"


:: Once user exits software write log string and exit .bat file
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%b/%%a/%%c)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a:%%b) 

:: Ending time and info
echo %someinfo%,%mytime%,%mydate% >> C:\Temp\MSuser.log 

问题是当子进程启动"addinfo.bat“时,父进程在继续下一行代码(启动/Wait "C:\Program (x86)\notepad.exe")之前等待子进程完成

是否可以同时运行子进程和继续父进程?此外,是否有办法在退出父进程之前强制关闭子进程,也许类似于“杀死like”之类的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-14 00:57:10

这将从您的子进程中获取PID,并在父进程完成时终止它:

代码语言:javascript
复制
@echo off

set someinfo=
set /p someinfo="Enter Some Info Please: "
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%b/%%a/%%c)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a:%%b)

:: Starting time and info
echo %someinfo%,%mytime%,%mydate% >> C:\Temp\MSuser.log 

:: This would be the child process for additional input 
start "Additional info" adinfo.bat

::This is the software I want to start
start /Wait "" "notepad.exe"

:: Once user exits software write log string and exit .bat file
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%b/%%a/%%c)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a:%%b) 

:: Ending time and info
echo %someinfo%,%mytime%,%mydate% >> C:\Temp\MSuser.log

for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "Additional info"') do set "$PID=%%a"
taskkill /PID %$PID%
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24215237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档