Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 仅启动另一个批处理文件一次_Loops_Batch File - Fatal编程技术网

Loops 仅启动另一个批处理文件一次

Loops 仅启动另一个批处理文件一次,loops,batch-file,Loops,Batch File,我不熟悉脚本,我遇到了一个我可以自己解决的问题 我有一个脚本可以运行几次(3-10次)。我需要在脚本末尾有一个循环来运行另一个批处理文件,该批处理文件将发送邮件,该脚本运行正常 问题是它总是发送3-10封邮件(因为脚本运行多次) 我需要在脚本末尾有一个循环,该循环表示只运行一次批处理文件,无论主脚本运行多少次 我用过这个: FOR %%A IN (1) DO ( START C:\dodavka\send_mail.bat ) 这不起作用 在子脚本代码中设置一个环境变量,如果已设置,则在此批处

我不熟悉脚本,我遇到了一个我可以自己解决的问题

我有一个脚本可以运行几次(3-10次)。我需要在脚本末尾有一个循环来运行另一个批处理文件,该批处理文件将发送邮件,该脚本运行正常

问题是它总是发送3-10封邮件(因为脚本运行多次)

我需要在脚本末尾有一个循环,该循环表示只运行一次批处理文件,无论主脚本运行多少次

我用过这个:

FOR %%A IN (1) DO (
START C:\dodavka\send_mail.bat
)

这不起作用

在子脚本代码中设置一个环境变量,如果已设置,则在此批处理文件运行期间检查该环境变量

您必须使用call关键字调用批处理文件,以便该批处理文件中设置的值保留在内存中

在主代码中:

If "%MYVARIABLE%" == "" THEN   CALL SUBBATCHFILE
在您的子代码中:

SET MYVARIABLE = "SET"

或者,您可以在
IF
语句中使用括号,并从同一脚本而不是子脚本中设置变量。这更安全,因为您不依赖于其他批处理文件的结果。最好的解决方案取决于您是否需要发送有关每次运行的信息,例如在一天的单个日志文件中。一个问题是:脚本如何判断它是否已经完成了一天的运行?是否在一天结束时创建了一个文件,或删除了一个特定的文件?