从任务计划程序运行批处理文件时,其中包含Java命令的.bat文件无法正常工作。如果我手动运行.bat文件,则可以正常工作。
这是我尝试安排的简单.bat文件:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24;
set CMD= "%JAVA_HOME%\bin\java" -version
echo %CMD%
%CMD%
从任务计划程序运行批处理文件时,其中包含Java命令的.bat文件无法正常工作。如果我手动运行.bat文件,则可以正常工作。
这是我尝试安排的简单.bat文件:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24;
set CMD= "%JAVA_HOME%\bin\java" -version
echo %CMD%
%CMD%
batchfile.bat
时,你告诉 cmd.exe
读取文件并执行其中的每一行。当你在资源管理器中双击批处理文件时,它会调用注册表中的文件关联信息,并为你调用 cmd.exe
。cmd /c "c:\full\path\to\your\batchfile.bat"
为了增加健壮性,您可以确保批处理文件从已知目录运行,例如它所在的目录,在顶部添加以下内容:
为了确保更稳定可靠,你可以在批处理文件的开头加入以下代码,以使其从已知目录中运行:pushd %~dp0
REM .... The original batch file goes here ....
popd
最后,您可以通过在cmd
之后添加/d
来禁用CMD自动运行条目,如下所示:
cmd /d /c "c:\full\path\to\your\batchfile.bat"
'Actions'
'Edit' the task
'Start in (optional):' Put the path to the directory where the script is
因此,对于最后一个问题,如果您有'C:\Users\Desktop\script.py',只需在“起始位置(可选):”字段中放入'C:\Users\Desktop\'。
对我有用的方法是将任务运行为“用户”(计算机名称\Users)。一旦这样做,并且勾选了“使用最高权限运行”,它就可以顺利运行。
"C:\Program Files\Java\jdk1.8.0_40\bin\java.exe" -jar "C:\Users\usernameXXXX\Documents\NetBeansProjects\JavaApplication5\dist\JavaApplication5.jar"
对我来说,其他方法都不起作用,我按照了这个指南:http://richardstk.com/2012/06/15/scheduled-task-to-run-a-batch-file/#comment-6873
为了让批处理文件运行,我不得不将“程序/脚本”框中的内容设置为脚本文件的名称(即script.bat),并在“起始于(可选)”框中设置脚本的文件夹路径。
我曾经遇到过同样的问题,为了解决它,我将下一个命令行放入批处理文件中:
cd "CURRENT_DIRECTORY"
其中CURRENT_DIRECTORY
是批处理文件所在的目录。
例如: 假设我的批处理文件名为test.bat,位于c:\windows\system32\mytest中
在我的test.bat文件中,我输入了下一个命令行:
cd c:\windows\system32\mytest