2015-09-06 88 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" 

然後就有一個批處理文件。

相關問題