[英]Merge two Batch Files into one
我編寫了一個小腳本,該腳本從控制台應用程序獲取信息並通過電子郵件將其發送給我。 我已經使用Quiet讓程序在后台運行。
start.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"
如果我像這樣運行它,則可以正常工作,但是當我嘗試制作一個文件時,例如:
腳本
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"
它發送無限量的電子郵件。 當我這樣做時,它可以工作,但不像我想要的那樣。
腳本
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"
無限郵件的原因是您在批處理文件中調用了批處理文件,這將導致運行批處理的無限循環。
問題與您期望發生的邏輯有關,您想要單擊批處理文件,並希望它在外殼程序中運行之前由Quiet運行。
如果只想在后台運行它,則可以通過將其作為“系統”運行(帶有服務/計划任務等)來輕松實現,否則我認為您無法解決此問題(您希望另一個可執行文件將運行您單擊的當前批處理-第一個批處理將始終打開一個窗口)。
更新
不確定我是否了解所有內容。
一種方法是在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
在最后一個示例中,您必須處理雙引號,可能沒有必要。
因為單擊要啟動程序,所以快捷方式中可以包含啟動命令,可以在屬性中進行更改。
"c:\folder\Quiet.exe" "c:\batch\folder\script.bat"
然后只有一個批處理文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.