2012-01-04 89 views
3

我的程序出現問題,每6小時發生一次或兩次。所以我想知道是否有辦法讓批處理腳本能夠在後臺不斷運行,並且只能執行早上6點,中午6點,午夜6點給出的命令。批處理腳本,在特定時間進入睡眠狀態

我的劇本只是一個命令,它是

"C:\Program Files\WinSCP\WinSCP.com" /command "open %INPUT%" "get /etc/logs/*" "get /etc/network/interfaces" "bye" 

我已經打破了我的脖子,似乎無法找出一個辦法讓程序睡眠和未用完的CPU在一定時間內的一天。

回答

2

下批處理文件6,12,18和0小時執行命令:

@echo off 
:waitNextRun 
for /F "delims=:" %%h in ("%time%") do set hour=%%h 
set /A mod6=hour %% 6 
if not %mod6% == 0 goto waitNextRun 

"C:\Program Files\WinSCP\WinSCP.com" /command "open %INPUT%" "get /etc/logs/*" "get /etc/network/interfaces" "bye" 

:waitNextHour 
for /F "delims=:" %%h in ("%time%") do if %hour% == %%h goto waitNextHour 
goto waitNextRun 

然而,該批處理文件不「在後臺」運行,但作爲一個正常的批處理文件。您可以通過使用以下命令啓動CPU,從而最大限度地減少其CPU使用量:

START "Run WinSCP every six hours" /MIN /LOW theBatchFile 
0

使用內置於操作系統中的調度。在Linux下,它在窗口下是cron,搜索Scheduler。這將讓你在任何你喜歡的時間表上運行任意腳本。

+0

在Windows中,通過AT命令訪問調度程序。但是,它只允許在特定的日期和時間安排任務(它不允許在任何時間間隔重複任務),所以需要在0,6,12和18小時內執行AT四次,並且包含在每次執行中所有的月份日期(從1到31),並且每月重複這個程序。此外,它還需要Windows Schedule服務正在運行。 – Aacini 2012-01-05 04:56:24

+0

@Aacini - 感謝列出命令。我只熟悉用於配置調度程序的GUI。我不確定我使用的是哪個版本的Windows,但我很確定我可以安排腳本在一天中執行多次,以及其他一系列選項。有可能,在引擎蓋下,它的結局與你描述的一樣,但我不知道。此外,關於服務必須運行的好點。它需要,但作爲一項服務,它不使用許多資源。 – cdeszaq 2012-01-05 14:27:58

+0

爲什麼在嘗試調度程序之前不嘗試我的批處理解決方案?要做到這一點,你只需要複製批處理文件並輸入一個開始命令!另外,如果以後使用調度程序,這將是一個很好的比較點。你確定調度程序比Batch解決方案表現得更好嗎?這個問題的答案是普遍的興趣! ;-) – Aacini 2012-01-06 20:04:39

1

正確的做法可能是設置cron任務,或者如果您使用的是Windows並且無法訪問cron,通過CygWin,然後使用task scheduler

相關問題