命令可以从命令行运行,但不能从任务计划程序运行

命令可以从命令行运行,但不能从任务计划程序运行

我想要一个 Windows 计划任务来执行 FTP 批处理文件,该文件会将一些文件上传到我的服务器。如果我从命令行运行下面的参数,那么它将成功执行。

ftp -i -s:C:\<path-to-file>\ftp.dat

当我尝试通过计划任务运行此程序时,它总是进入创建的任务流程并保持这种状态;它不会完成或失败。我也尝试过不使用 put 命令,但它仍然会执行此操作,所以它并不是在等待传输文件。

我正在通过任务调度程序 GUI 创建任务Windows Vista。在常规选项卡下,无论用户是否登录,我都运行并以最高权限设置运行。

在操作下,它被设置为运行C:\\Windows\System32\cmd.exe

论点是

ftp -i -s:C:\<path-to-file>\ftp.dat

ftp.dat 文件如下所示:

open ftp.mysite.co.uk
myUsername
myPassword
put C:\<path-to-file>\file.xml
put C:\<path-to-file>\file2.xml
bye

我不明白为什么从命令行手动运行得很好,但从计划任务运行却不行。

答案1

/c当您添加参数来cmd.exe运行命令时它应该可以工作( ftp):

C:\Windows\System32\cmd.exe
/c ftp -i -s:C:\<path-to-file>\ftp.dat

您还可以在命令行上尝试这个“整个”操作:

cmd /c ftp -i -s:C:\<path-to-file>\ftp.dat

如果没有/c它,只会在控制台内打开一个控制台,注意执行命令。

答案2

我的建议是VB脚本计划任务中的脚本:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "C:\Windows\System32\ftp.exe -i -s:C:\<path-to-file>\ftp.dat", , True

与尝试安排命令相比,我安排 VBScript 脚本的运气总是更好一些。

答案3

听起来似乎仍然存在权限或文件访问问题,因为当不使用 UI 运行时,环境的某些部分不可用。很可能是文件或路径不可用,因为我们不知道去哪里...

最好的办法是记录输出ftp以查看是否有错误。如果将来出现类似这样的问题,那么检查一下会很有用:

ftp -i -s:C:\<path-to-file>\ftp.dat >c:\ftp.log

您可以将日志文件放入,但如果由于某种原因您无法访问该文件夹,它将不会提供日志,因此在排除该可能性之前,最好将其保存在根目录中。一旦您排除了该问题,您就可以将其移动到更合适的位置。

相关内容