2011-11-21 63 views
3

我寫了一個簡單的.BAT腳本,我將它安排在windows服務器上進行備份。問題是它運行一個應用程序,但輸出不在它所在的文件夾中,它在某處(我不知道在哪裏)。輸出是一個日誌文件和一個備份文件。如何讓從BAT文件運行的程序在自己的目錄中運行?

這裏的腳本:

"%JAVA_HOME%"\bin\java -jar "%~dp0jwbackup.jar" 

回答

7

你有兩個選擇。首先,您可以按照指定可執行文件的相同方式爲計劃任務設置當前目錄。當然,這是一個額外的事情,你需要擔心,如果位置改變。

另一種方式已顯示在腳本中。您的jar文件規範中的%~dp0是參數零(批處理文件名)的驅動器和路徑,因此它會在與批處理文件相同的目錄中查找jar文件。

因此你可以把:

cd /d %~dp0 

到您的命令文件試圖運行Java程序之前,這將是在正確的目錄,即使你決定把它移到別的地方去。

1

你可以只cd到運行的實際應用之前的文件夾:

cd\ 
cd "%JAVA_HOME%"\bin 
java -jar "%~dp0jwbackup.jar" 
+0

您可能不希望處於Java bin目錄中,而是我認爲要求與批處理文件位於同一目錄中。但理論是正確的,你只需要改變'cd'命令來選擇不同的位置。 – paxdiablo

+0

我對Java一無所知,所以我不知道將輸出文件放在'bin'目錄是否是一個好主意。他在他的問題中沒有清楚地說明他是否希望在批處理文件目錄或bin目錄中輸出(我理解後者)。如果他想要批處理文件目錄,那麼你的答案是更好的答案。 –

1

添加cd /d %~dp0將currect工作目錄設置爲.bat文件的位置。

+0

我說對了,過去不需要這個命令嗎? – pluton

+1

@pluton:[看起來像](http://stackoverflow.com/a/665682/819417)「開始」日程安排功能已損壞。 –

+0

錯位的自動運行出現問題。 – pluton