2012-06-04 76 views
2

我有一個程序,我試圖運行在登錄上,它依賴於它駐留在同一目錄中的文件。通過從命令行手動運行該程序(我已經cd'd),所有內容都按原樣運行。但是,如果我安排了一個任務來運行該程序,我會從我的程序中收到一個錯誤,指出找不到它需要的文件。所以我的問題是:1.)計劃任務的工作目錄是程序的位置? 2.)如果沒有,我將如何將工作目錄設置到程序的位置?schtasks:設置一個工作目錄?

這裏是我使用的時間表我的任務代碼:

SCHTASKS /Create /TN "Test" /TR $MyLocation\Test.exe /sc onlogon /RL Highest 

其中「$ MyLocation」是一個PowerShell變量,我設置爲引用我的程序的目錄。

+0

這等後看起來像它應該回答你的問題: http://stackoverflow.com/questions/447774/specifying-the-running-directory-for-scheduled-tasks-using-schtasks-exe –

+0

我通過創建cmd文件解決了這個問題,我在第一次設置工作目錄作爲我想要的目錄,然後運行腳本。 – Gisli

+0

@ChrisN:我看過那篇文章,但它沒有提供我希望我的程序執行的方式。/V1開關不允許您在系統帳戶下運行。我試過這個代碼,但沒有工作。我無法向您提供我收到的錯誤,但我可以再試一次並稍後發帖。 – arynhard

回答

0

我已經通過使用批處理文件解決了這個問題。您可以在批處理文件中使用一個簡潔的技巧,它將爲您提供該批處理文件所在的目錄。因此,您可以非常輕鬆地運行所需的應用程序。創建一個包含以下內容的批處理文件,並將其放置在應用旁邊的目錄中,然後將其路徑設置爲/ TR參數的值。

%~dp0\Test.exe 

嚴格地說,不需要反斜槓作爲%~dp0包括斜槓反正。我認爲它使批處理文件更易讀。

+0

Powershell中的「pwd」將列出當前目錄。 – rud3y

+1

@ rud3y是的,但當前目錄可能不是腳本運行的目錄。例如,你可以'cd C:\ Foo'然後'。 C:\富\酒吧\巴茲\ Quux.ps1'。在這種情況下,'%〜dp0'將會是「C:\ Foo \ Bar \ Baz」,'$ PWD'將會是「C:\ Foo」。 –

+0

好電話:) :) – rud3y

0

如果你運行一個腳本,並作爲一個參數像這樣的設置任務Ø送$ MyLocation:

$cmdFile = "$MyLocation\Test.cmd" 
New-Item $cmdFile -type file 
"cd $MyLocation" >> $cmdFile 
"powershell -command '& {$($MyLocation)\Test.exe}'" >> $cmdFile 
SCHTASKS /Create /TN "Test" /TR $cmdFile /sc onlogon /RL Highest 

吉斯利