2014-10-06 75 views
0

我有一個批處理文件,下面的代碼:如何使用循環運行批處理文件作爲計劃任務?

for /F "tokens=1,2" %%a in (%CD%\clients.txt) do (
    start "My Task" /d "%CD%" /b php -f "%CD%\task.php" "%%a" "/%%b" 
) 

如果我從命令提示符手動運行該批處理文件,它工作正常。但是,如果我將它作爲計劃任務運行,則它會失敗並顯示最後運行結果(0x2)。請注意,如果我從要運行的進程中的變量的代碼和硬編碼值中刪除循環,則任務運行良好。

我也注意到任何一種簡單的文件操作,如回聲測試> log.txt似乎並沒有運行時的計劃任務執行批處理文件,但手動工作。我嘗試將計劃任務設置爲「以最高權限運行」,但沒有解決問題。我還將計劃任務操作的「開始」設置設置爲PHP和文本文件所在的目錄,這也不起作用。這裏想法不多,有什麼想法?

+0

如果我不得不猜測,'%CD%'不是您認爲的那樣(它指的是* current directory *,它不一定是批處理腳本所在的目錄)。 – iCodez 2014-10-06 20:28:09

+0

謝謝!這使我走上了正確的軌道,我找到了答案。解答張貼在答案。 – Rocket04 2014-10-06 20:45:30

回答

0

我想通了。正如iCodez在評論中指出的那樣,%CD%不是我預期的那樣。文件正在我的簡單測試中創建,但在錯誤的文件夾中。這個問題是由於我更新了HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun指向一個不同的文件夾。看起來這比我在計劃任務中指定的Start In目錄優先。我刪除了我的AutoRun鍵,並開始工作屬性。只是去顯示編輯這些註冊表項的風險!

+0

您可以使用'cmd/d/c myBatchFile.cmd'來避免執行自動運行註冊表項 – 2014-10-07 06:46:08

相關問題