【问题标题】:Getting a batch file to run in task scheduler获取批处理文件以在任务计划程序中运行
【发布时间】:2018-04-10 19:49:56
【问题描述】:

我有一个批处理文件,它在运行时会将日期和时间附加到文件末尾。但是,当它通过任务计划程序运行时,它不会将日期/时间附加到文件的末尾。

有问题的批处理文件:

@echo off

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="E:\PowerEQ\Logs\website.log" /ini=nul ^
  /command ^
    "open ftp://<hiddeninfo>/" ^
    "lcd E:\Website\" ^
    "cd /public_html/powereq/processed/" ^
    "get test.zip" ^
"exit"
cd\
cd Website

for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set 
dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=%YYYY%%MM%%DD%_%HH%%Min%%Sec%


rename "test.zip" "test_%stamp%.zip"
    "exit" ^

任何想法为什么在使用任务计划程序运行时这不起作用?

【问题讨论】:

  • 很难说,因为您没有解释它是如何在任务调度程序中设置的。它是否在对文件具有权限的帐户下运行?
  • E: 驱动器是本地驱动器还是映射的网络路径?计划任务设置是在用户登录时运行还是无论用户是否登录都运行?
  • 无论用户是否登录,都设置为使用本地服务器管理员帐户运行。 E:驱动器是本地驱动器。我有一个类似的批处理文件(与这个没有日期组件的批处理文件相同),它可以很好地通过任务调度程序运行。
  • @BrianRudnicke,当您像这样设置任务计划程序时,执行批处理文件时,默认工作目录将变为 SYSTEM32 目录。当您使用CD 命令时,它正在使用 C: 驱动器。将您的 CD 命令更改为。 CD /D E:\website

标签: batch-file taskscheduler windows-task-scheduler


【解决方案1】:

要调试这样的问题,请将批处理文件包装到另一个批处理文件,并将输出重定向到文件。

包装批处理文件(例如wrapper.bat)将类似于:

C:\path\to\thebatch.bat > C:\writtable\path\thebatch.log 2>&1

并从任务计划程序执行wrapper.bat,而不是thebatch.bat

然后检查日志文件是否有任何错误。

【讨论】:

  • 感谢您的提示。我按照指示设置了 wrapper.bat,但它只获取传输程序 WinSCP 的输出。此后执行的任何操作都不会被记录。
  • 我忘了添加错误重定向。请参阅我的更新答案。
猜你喜欢
  • 2014-03-15
  • 2013-03-01
  • 2014-09-14
  • 2019-04-06
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多