簡體   English   中英

將兩個批處理文件合並為一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM