将两个批处理文件合并为一个

时间:2015-09-06 12:51:58

标签: windows batch-file cmd

我写了一个小脚本,它从控制台应用程序中获取信息并通过电子邮件发送给我。我使用Quiet让程序在后台运行。

的start.bat

Quiet script.bat

script.bat

info.exe > "data.txt"
sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a "data.txt" 
del "data.txt"

如果我像这样运行它可以正常工作,但当我尝试制作一个文件时:

script.bat

Quiet script.bat
info.exe > "data.txt"
sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a      data.txt" 
del "data.txt"

它会发送大量电子邮件。当我这样做它有效但不像我想要它。

script.bat

Quiet script.bat
pause
info.exe > "data.txt"
sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a      data.txt" 
pause
del "data.txt"

3 个答案:

答案 0 :(得分:0)

无限邮件的原因是您在批处理文件中调用批处理文件,这会导致无限循环运行批处理。

问题在于你期望发生什么的逻辑, 你想点击批处理文件,并希望它在shell运行之前由Quiet运行。

如果你只是想在后台运行它,你可以通过运行它来轻松实现它" System"(带有服务/计划任务等),否则我认为你可以&#39 ; t解决此问题(您希望另一个可执行文件将运行您正在单击的当前批处理 - 第一批将始终打开一个窗口。)

答案 1 :(得分:0)

<强>更新

不确定我理解了一切。

一种方法是在 script.bat

每个命令前面都需要回音。如果它不起作用,请尝试一行

@echo off
( 
echo info.exe > "data.txt"
echo sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a "data.txt" 
echo del "data.txt"
) > output.txt 2>&1 | Quiet.exe

或在一个班轮

@echo off
( 
echo info.exe > "data.txt" &&^
echo sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a "data.txt" &&^ 
echo del "data.txt" &&^
) > output.txt 2>&1 | Quiet.exe

这样,start.bat就没有必要了。 这相当于:

Quiet.exe info.exe > "data.txt" && sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a "data.txt" && del "data.txt"

修改

@echo off
Quiet start cmd /c "info.exe > 'data.txt' && sendEmail -o tls=yes -f myemail@gmail.com -t myemail@gmail.com -s smtp.gmail.com:587 -xu myemail@gmail.com -xp mypasswd -u "XXX" -m "XXX" -a 'data.txt' && del 'data.txt'"
Pause

在最后一个例子中,你必须处理双引号,可能没有必要。

答案 2 :(得分:0)

因为您单击以启动该程序,所以快捷方式可以在其中包含启动命令,并在属性中进行更改。

"c:\folder\Quiet.exe" "c:\batch\folder\script.bat"

然后只有一个批处理文件。