我写了一个小脚本,它从控制台应用程序中获取信息并通过电子邮件发送给我。我使用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"
答案 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"
然后只有一个批处理文件。