我在批处理文件中有以下代码:
for /F "tokens=1,2" %%a in (%CD%\clients.txt) do (
start "My Task" /d "%CD%" /b php -f "%CD%\task.php" "%%a" "/%%b"
)
如果我从命令提示符手动运行批处理文件,它可以正常工作。但是,如果我将其作为计划任务运行,则会失败并显示上次运行结果(0x2)。请注意,如果我从代码中删除循环并对要运行的进程中的变量进行硬编码,则任务运行正常。
我还注意到任何一种简单的文件操作,例如echo test> log.txt似乎在计划任务执行批处理文件时运行,但是手动工作。我尝试将计划任务设置为"以最高权限运行",并没有解决它。我还设置了"开始"将计划任务操作设置为PHP和文本文件所在的目录,这两者都不起作用。这里的想法已经不多了,有什么想法吗?
答案 0 :(得分:0)
我明白了。正如iCodez在评论中指出的那样,%CD%并不是我所期望的。文件是在我的简单测试中创建的,但是在错误的文件夹中。问题是由于我更新了HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun以指向其他文件夹。看起来这比我在计划任务中指定的Start In目录优先。我删除了我的AutoRun键,事情开始工作了。只是去表明编辑其中一些注册表项是冒险的!