2015-09-06 54 views
0

我写了从一个控制台应用程序采取的相关信息,并通过电子邮件将其发送给我一个小脚本。我用Quiet让程序在后台运行。合并两个批处理文件到一个

的start.bat

Quiet script.bat 

script.bat

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

,如果我像这样运行它,它工作正常,但是当我尝试,使这一个文件,如:

脚本.bat

Quiet script.bat 
info.exe > "data.txt" 
sendEmail -o tls=yes -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -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 [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -xp mypasswd -u "XXX" -m "XXX" -a  data.txt" 
pause 
del "data.txt" 
+0

您是否正在通过单击开始批处理文件启动该功能? – foxidrive

+0

是的,但我希望它只是一个批处理文件,而不是两个。 –

回答

0

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

问题出在你期望发生的事情的逻辑上, 你想单击该批处理文件,并希望它在Quiet运行之前运行在shell中。

如果你只是想在后台运行,你可以很容易地通过(与服务/计划任务等)运行为“系统”实现它,否则我认为你不可能解决这个问题(您希望另一个可执行文件将运行您正在单击的当前批处理 - 第一批将始终打开一个窗口)。

0

UPDATE

不知道我什么都明白了。

一种方式将是在script.bat

可能回声,需要在每个命令中的前面。如果它不工作,尝试在一行

@echo off 
( 
echo info.exe > "data.txt" 
echo sendEmail -o tls=yes -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -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 [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -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 [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -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 [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -xp mypasswd -u "XXX" -m "XXX" -a 'data.txt' && del 'data.txt'" 
Pause 

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

+0

它不工作。 –

0

因为你点击启动程序,快捷方式可以在它的发射命令,在性质改变。

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

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

相关问题