Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何让从BAT文件运行的程序在它们自己的目录中运行?_Windows_Batch File_Scheduled Tasks - Fatal编程技术网

Windows 如何让从BAT文件运行的程序在它们自己的目录中运行?

Windows 如何让从BAT文件运行的程序在它们自己的目录中运行?,windows,batch-file,scheduled-tasks,Windows,Batch File,Scheduled Tasks,我编写了一个简单的.BAT脚本,我在windows server中计划了它以用于备份。问题是它运行一个应用程序,但输出不在它所在的文件夹中,而是在某个地方(我不知道在哪里)。输出是一个日志文件和一个备份文件 以下是脚本: "%JAVA_HOME%"\bin\java -jar "%~dp0jwbackup.jar" 在运行实际应用程序之前,您只需将cd放入文件夹即可: cd\ cd "%JAVA_HOME%"\bin java -jar "%~dp0jwbackup.jar" 你有两个选择。

我编写了一个简单的.BAT脚本,我在windows server中计划了它以用于备份。问题是它运行一个应用程序,但输出不在它所在的文件夹中,而是在某个地方(我不知道在哪里)。输出是一个日志文件和一个备份文件

以下是脚本:

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

在运行实际应用程序之前,您只需将
cd
放入文件夹即可:

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

你有两个选择。第一种方法是,可以使用与指定可执行文件相同的方法设置计划任务的当前目录。当然,如果位置发生变化,这是一件额外需要担心的事情

另一种方式已显示在脚本中。jarfile规范中的
%~dp0
是参数0(批处理文件名)的驱动器和路径,因此它会在与批处理文件相同的目录中查找jarfile

因此,你可以把:

cd /d %~dp0

在尝试运行Java程序之前,将其放入命令文件中,即使您决定将其移动到其他地方,它也将位于正确的目录中。

添加
cd/d%~dp0
将当前工作目录设置为.bat文件的位置。

您可能不希望位于Java bin目录中,相反,我认为要求与批处理文件位于同一目录中。但是理论是正确的,您只需更改
cd
命令来选择不同的位置。我对Java一无所知,因此我无法判断将输出文件放入
bin
目录是否是一个好主意。他没有在问题中明确说明是希望将输出放在批处理文件目录还是
bin
目录中(我理解后者)。如果他想要批处理文件目录,那么你的答案是更好的。我说这个命令在过去是不需要的,对吗?@puropon:start in计划功能被破坏了。