我寫了一個簡單的.BAT腳本,我將它安排在windows服務器上進行備份。問題是它運行一個應用程序,但輸出不在它所在的文件夾中,它在某處(我不知道在哪裏)。輸出是一個日誌文件和一個備份文件。如何讓從BAT文件運行的程序在自己的目錄中運行?
這裏的腳本:
"%JAVA_HOME%"\bin\java -jar "%~dp0jwbackup.jar"
我寫了一個簡單的.BAT腳本,我將它安排在windows服務器上進行備份。問題是它運行一個應用程序,但輸出不在它所在的文件夾中,它在某處(我不知道在哪裏)。輸出是一個日誌文件和一個備份文件。如何讓從BAT文件運行的程序在自己的目錄中運行?
這裏的腳本:
"%JAVA_HOME%"\bin\java -jar "%~dp0jwbackup.jar"
你有兩個選擇。首先,您可以按照指定可執行文件的相同方式爲計劃任務設置當前目錄。當然,這是一個額外的事情,你需要擔心,如果位置改變。
另一種方式已顯示在腳本中。您的jar文件規範中的%~dp0
是參數零(批處理文件名)的驅動器和路徑,因此它會在與批處理文件相同的目錄中查找jar文件。
因此你可以把:
cd /d %~dp0
到您的命令文件試圖運行Java程序之前,這將是在正確的目錄,即使你決定把它移到別的地方去。
你可以只cd
到運行的實際應用之前的文件夾:
cd\
cd "%JAVA_HOME%"\bin
java -jar "%~dp0jwbackup.jar"
您可能不希望處於Java bin目錄中,而是我認爲要求與批處理文件位於同一目錄中。但理論是正確的,你只需要改變'cd'命令來選擇不同的位置。 – paxdiablo
我對Java一無所知,所以我不知道將輸出文件放在'bin'目錄是否是一個好主意。他在他的問題中沒有清楚地說明他是否希望在批處理文件目錄或bin目錄中輸出(我理解後者)。如果他想要批處理文件目錄,那麼你的答案是更好的答案。 –