2014-05-08 30 views
0

我正在處理一個批處理腳本,該腳本需要轉換的視頻文件並將它們通過電子郵件發送給用戶。但是,轉換完成後,腳本開始將它們上傳到服務器,批處理腳本再次啓動。此問題正在導致文件被多次轉換和上傳,它也會將重複的電子郵件發送給同一用戶。什麼可能導致此腳本重新啓動?FTP傳輸過程中的批量腳本循環

說明:當我說「再次啓動」或「重新啓動」時,意思是腳本的新實例在另一個完成之前啓動。

編輯:由於格式化問題,此腳本已更新如下,但問題仍然存在。

C:\ffmpeg\bin\ffmpeg.exe -i C:\projects\weatherRecorder\avi\%1.mpg -qscale 0 -y C:\projects\weatherRecorder\avi\%1.mp4 
C:\ffmpeg\bin\ffmpeg.exe -i C:\projects\weatherRecorder\avi\%1.mpg -q:v 6 -y C:\projects\weatherRecorder\avi\%1.ogv 
C:\ffmpeg\bin\ffmpeg.exe -i C:\projects\weatherRecorder\avi\%1.mpg -q:v 9 -y C:\projects\weatherRecorder\avi\%1.webm 
(
echo option batch abort 
echo option confirm off 
echo open ftp://example.org:[email protected]/ 
echo put C:\projects\weatherRecorder\avi\%1.mp4 /domains/example.org/html/wfsb/video/ 
echo put C:\projects\weatherRecorder\avi\%1.ogv /domains/example.org/html/wfsb/video/ 
echo put C:\projects\weatherRecorder\avi\%1.webm /domains/example.org/html/wfsb/video/ 
echo put C:\projects\weatherRecorder\avi\%1.txt /domains/example.org/html/wfsb/video/ 
echo exit 
) > ftpScript%1.txt 
C:\winscp.com /script=ftpScript%1.txt 
del C:\projects\weatherRecorder\avi\%1.mpg 
del C:\projects\weatherRecorder\avi\%1.mp4 
del C:\projects\weatherRecorder\avi\%1.ogv 
del C:\projects\weatherRecorder\avi\%1.webm 
"C:\xampp\php\php.exe" -f send.php %1 

和腳本開始在這條線的新實例:

C:\winscp.com /script=ftpScript%1.txt 

我看過類似的問題,它看起來像很多涉及到批處理腳本文件名是相同的命令在腳本中。在文件中存在FTP命令時的示例'FTP.bat'。我不相信這是問題,因爲文件名是'ftp_script.bat'。

請讓我知道,如果我可以提供任何其他信息來澄清此問題。

+0

你通過記錄數量%1,讓你在一個時間試圖FTP多個流?如果是這樣,你的'del ftpScript * .txt'可能會刪除另一個傳輸的控制文件,這可能會使WINSCP沮喪,也許? –

+0

%1是記錄的時間和日期。 '%1.mpg'會變成類似:'14-04-17-15-47.mpg'。在創建新文件之前,先前的任何控制文件都將被刪除。我不明白爲什麼WINCSP會感到困惑。你能否更詳細地向我解釋一下?謝謝! – notchris

+0

您使用WINSCP.COM創建'ftp_result.txt',然後覆蓋它兩次...爲什麼? –

回答

1

這其實不是一個答案,但格式是很難在評論閱讀,所以我建議一些澄清/簡化您的腳本...

您可能會發現更容易些:

(
echo option batch abort 
echo option confirm off 
echo open ftp://example.org:[email protected]/ 
echo lcd C:\projects\weatherRecorder\avi 
echo cd /domains/example.org/html/video 
echo put %1.mp4 
echo put %1.ogv 
echo put %1.webm 
echo put %1.txt 
echo exit 
) > ftpScript%1.txt 

代替這個:

del ftpScript*.txt 
echo option batch abort> ftpScript%1.txt 
echo option confirm off>> ftpScript%1.txt 
echo open ftp://example.org:[email protected]/>> ftpScript%1.txt 
echo put C:\projects\weatherRecorder\avi\%1.mp4 /domains/example.org/html/video/>> ftpScript%1.txt 
echo put C:\projects\weatherRecorder\avi\%1.ogv /domains/example.org/html/video/>> ftpScript%1.txt 
echo put C:\projects\weatherRecorder\avi\%1.webm /domains/example.org/html/video/>> ftpScript%1.txt 
echo put C:\projects\weatherRecorder\avi\%1.txt /domains/example.org/html/video/>> ftpScript%1.txt 
echo exit>> ftpScript%1.txt 
+0

謝謝你清理這個腳本標記!只是讓我明白,在修改過的腳本中括號的目的是什麼?我感謝你的幫助 – notchris

+0

它只是把所有'echo'命令的所有輸出放在一起,並將它們寫入'ftpScript%1.txt'文件中,實質上它使它們成爲一個子命令 –

+0

Mark,這樣做更有意義!謝謝,我會在今天下午測試這個版本,如果它解決了問題,我會記得標記爲正確的! – notchris

1

您是否已經使用了一個命令作爲批處理文件名的名字 - 嘗試重命名它testftp.bat檢查edit:我注意到你的批處理文件名,但是沒有任何重新啓動它,我可以看到;但我不知道php.exe在做什麼。

c:\中有winscp.bat嗎?

如果這些都不是問題,那麼該行將等到FTP已完成再繼續:

start "" /w /b C:\winscp.com /script=ftpScript%1.txt > ftp_result.txt 
+0

你好foxidrive,這些命令都沒有反映批處理腳本的名字。我也刪除了將結果寫入到ftp_result的部分。我的C目錄中也沒有winscp.bat文件。 PHP.exe只是簡單地運行一個PHP腳本,它發送一封電子郵件給任何錄製視頻文件的用戶,並鏈接到他們的視頻文件。 我會嘗試使用您建議的WINSCP版本的修訂版本,但是腳本會一直等到傳輸完成後再繼續,但是在上傳期間它會創建整個批處理腳本的附加實例。 – notchris

+0

你已經改變了腳本,正如你上面所說的那樣,正如我概括的那樣:在你向我們展示的內容中沒有任何重新運行腳本。 – foxidrive

+0

我想知道如果問題是由WINSCP本身造成的?或者這可能是服務器託管文件的問題?我擔心這是觸發批處理腳本的應用程序的問題,但是,這個問題最近纔剛剛發生。 注意:我們以前使用FTP命令而不是使用WINSCP,我們的新服務器由於某種原因不允許這樣做。這就是爲什麼我會認爲這是WINSCP行格式化的問題。即便如此,觸發整個批處理文件對我來說似乎很奇怪。 – notchris