【问题标题】:How to have the programs that are run from a BAT file run in their own directory?如何让从 BAT 文件运行的程序在它们自己的目录中运行?
【发布时间】:2012-01-02 22:25:45
【问题描述】:

我编写了一个简单的 .BAT 脚本,我将它安排在 Windows 服务器中以进行备份。问题是它运行一个应用程序,但输出没有进入它所在的文件夹,它进入某个地方(我不知道在哪里)。输出是一个日志文件和一个备份文件。

这是脚本:

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

【问题讨论】:

    标签: windows batch-file scheduled-tasks


    【解决方案1】:

    你有两个选择。第一个是您可以像指定可执行文件一样设置计划任务的当前目录。当然,如果位置发生变化,您需要额外担心这一点。

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

    因此你可以输入:

    cd /d %~dp0
    

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

    【讨论】:

      【解决方案2】:

      您可以在运行实际应用程序之前将cd 放入该文件夹:

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

      【讨论】:

      • 您可能不想在Java bin 目录中,而我认为要求是与批处理文件位于同一目录中。但理论是正确的,你只需要更改cd命令来选择不同的位置。
      • 我对Java一无所知,所以我不知道将您的输出文件放在bin 目录中是否是个好主意。如果他想要批处理文件目录或bin 目录中的输出(我理解后者),他没有在他的问题中明确说明。如果他想要批处理文件目录,那么你的答案是更好的。
      【解决方案3】:

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

      【讨论】:

      • 我说过去不需要此命令对吗?
      • @pluton:It looks like“开始”计划功能已损坏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 2022-10-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2010-10-24
      相关资源
      最近更新 更多