Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 用另一个批处理文件结束一个批处理文件的代码有人可以帮助吗?_File_Batch File_Prepare - Fatal编程技术网

File 用另一个批处理文件结束一个批处理文件的代码有人可以帮助吗?

File 用另一个批处理文件结束一个批处理文件的代码有人可以帮助吗?,file,batch-file,prepare,File,Batch File,Prepare,我有一个小的批处理程序,用来运行一些批处理文件。我已经设置好运行文件了。只是一个简单的问题: 我有一个准备文件来准备下一批文件。但是,prep文件在循环中运行。我让它在一个循环中运行,这样我就可以为每台机器定制它。我希望它基本上循环10秒,然后关闭。我需要它,所以我的主批处理文件打开准备批处理文件,运行10秒钟,关闭它,然后按顺序运行下一个批处理文件。有没有办法做到这一点?有关更多信息,请参见下面的示例。谢谢 例如: Launcher folder/prep.bat @echo off star

我有一个小的批处理程序,用来运行一些批处理文件。我已经设置好运行文件了。只是一个简单的问题: 我有一个准备文件来准备下一批文件。但是,prep文件在循环中运行。我让它在一个循环中运行,这样我就可以为每台机器定制它。我希望它基本上循环10秒,然后关闭。我需要它,所以我的主批处理文件打开准备批处理文件,运行10秒钟,关闭它,然后按顺序运行下一个批处理文件。有没有办法做到这一点?有关更多信息,请参见下面的示例。谢谢

例如:

Launcher folder/prep.bat
@echo off
start prep.bat
//Wait for 10 seconds, then close prep.bat
start launch.bat

如果不清楚
prep.bat
做了什么,或者不知道它为什么需要循环,建议可能会偏离目标

尝试以下结构:

主要蝙蝠:

@ECHO OFF
SETLOCAL
DEL stopprep.txt 2>nul
START wprep.bat
timeout /t 10 >nul
ECHO.>stopprep.txt
:waitprep
IF EXIST stopprep.txt timeout /t 1 >nul& GOTO waitprep
ECHO prep now stopped
Wprep.bat:

@echo off
setlocal enabledelayedexpansion
:loop
set /a delay=2+(%random% %% 7)
timeout /t %delay%
if not exist stopprep.txt goto loop
del stopprep.txt
EXIT
我调用了批处理
WPREP.bat
,因为我的测试目录中已经有一个
prep.bat

主批处理使用
timeout
并使用
>nul
抑制其输出。10秒后,它创建一个flagfile
stopperep.txt
,然后重复等待1秒,直到文件消失

子批次应弹出并显示2..9秒的倒计时,然后重复,直到出现
STOPPREP.TXT
文件-启动后至少10秒。我故意选择不抑制
超时
的输出,以便在窗口中显示某些活动

如果您的系统没有安装
TIMEOUT
,则
ping-n timeoutrequired+1 127.0.0.1>nul
可能会正常工作,最近在标准发行版中重新出现的
choice
也可能正常工作


如果子批次未关闭,请检查它是否以
EXIT
语句结束。如果仍无法关闭,请尝试
CLS&EXIT

或者,要终止使用TASKKILL:

@ECHO OFF
SETLOCAL
START wprep.bat
timeout /t 10 >nul
FOR /f "tokens=2" %%i IN ('tasklist/v^|fIND /i " - wprep.bat   " ' ) DO >NUL TASKKILL /pid %%i
ECHO prep now stopped

如果
WPREP.bat
需要更改以满足您的目的。

如果不清楚
prep.bat
的功能,或者不知道它需要循环的更多原因,建议可能会偏离目标

尝试以下结构:

主要蝙蝠:

@ECHO OFF
SETLOCAL
DEL stopprep.txt 2>nul
START wprep.bat
timeout /t 10 >nul
ECHO.>stopprep.txt
:waitprep
IF EXIST stopprep.txt timeout /t 1 >nul& GOTO waitprep
ECHO prep now stopped
Wprep.bat:

@echo off
setlocal enabledelayedexpansion
:loop
set /a delay=2+(%random% %% 7)
timeout /t %delay%
if not exist stopprep.txt goto loop
del stopprep.txt
EXIT
我调用了批处理
WPREP.bat
,因为我的测试目录中已经有一个
prep.bat

主批处理使用
timeout
并使用
>nul
抑制其输出。10秒后,它创建一个flagfile
stopperep.txt
,然后重复等待1秒,直到文件消失

子批次应弹出并显示2..9秒的倒计时,然后重复,直到出现
STOPPREP.TXT
文件-启动后至少10秒。我故意选择不抑制
超时
的输出,以便在窗口中显示某些活动

如果您的系统没有安装
TIMEOUT
,则
ping-n timeoutrequired+1 127.0.0.1>nul
可能会正常工作,最近在标准发行版中重新出现的
choice
也可能正常工作


如果子批次未关闭,请检查它是否以
EXIT
语句结束。如果仍无法关闭,请尝试
CLS&EXIT

或者,要终止使用TASKKILL:

@ECHO OFF
SETLOCAL
START wprep.bat
timeout /t 10 >nul
FOR /f "tokens=2" %%i IN ('tasklist/v^|fIND /i " - wprep.bat   " ' ) DO >NUL TASKKILL /pid %%i
ECHO prep now stopped

其中,
WPREP.bat
需要根据您的目的进行更改。

prep.bat
中添加此项

@Echo Off
title Prep.bat
然后在控制批处理文件中添加

start "" prep.bat
ping -n 10 localhost >nul
taskkill /f /im cmd.exe /fi "windowtitle eq Prep.bat"

prep.bat
中添加此

@Echo Off
title Prep.bat
然后在控制批处理文件中添加

start "" prep.bat
ping -n 10 localhost >nul
taskkill /f /im cmd.exe /fi "windowtitle eq Prep.bat"

taskkill
将关闭prep.bat,而
ping-n10localhost>nul
将给您10秒的延迟<代码>超时在以后的Windows上可用。@foxidrive感谢您的帮助,但我不知道如何使用taskkill。请您再解释一下好吗?
taskkill
将关闭prep.bat,
ping-n 10 localhost>nul
将给您十秒钟的延迟<代码>超时在以后的Windows上可用。@foxidrive感谢您的帮助,但我不知道如何使用taskkill。你能再解释一下吗?谢谢!计时器会像你说的那样倒计时,但prep.bat不会关闭。我一直在尝试使用taskkill,但我认为您不能将其用于.bat文件。有没有办法让主批处理删除prep.bat文件?谢谢!计时器会像你说的那样倒计时,但prep.bat不会关闭。我一直在尝试使用taskkill,但我认为您不能将其用于.bat文件。有没有办法让主批处理删除prep.bat文件?非常感谢。成功了。我喜欢堆栈溢出。在正常情况下,我只需登录并提出一个问题,在大约10分钟内,我就有3到4个有用的答案!非常感谢你。成功了。我喜欢堆栈溢出。在正常情况下,我只需登录并提出一个问题,在大约10分钟内,我就有3到4个有用的答案!