如何让从BAT文件运行的程序在自己的目录中运行?
问题描述:
我写了一个简单的.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目录中输出(我理解后者)。如果他想要批处理文件目录,那么你的答案是更好的答案。 –