【问题标题】:Running batch file from scheduled task on windows server 2012 won't write to disc从 Windows Server 2012 上的计划任务运行批处理文件不会写入磁盘
【发布时间】:2014-11-26 07:33:05
【问题描述】:

我写了一个简短的批处理文件,用于每晚重新启动两个服务,并将一些行写入同一文件夹中的 txt 文件。根据计划任务的历史,任务运行成功,但未创建 txt 文件。

起初我以为这是因为权限问题,但是当我将运行任务的用户对批处理文件和文件夹的权限升级到最大时,结果保持不变。

如果我手动运行批处理文件,它会做它应该做的事情。

我在这里错过了什么?

来源:

@echo off
set now=%date:~6,4%%date:~3,2%%date:~0,2%

@echo. >>servicerestartlog.txt
@echo.%now% >>servicerestartlog.txt
net stop "IntegratorService"
IF ERRORLEVEL 0 @echo STOP INTEGRATOR SUCCESS>>servicerestartlog.txt
IF NOT ERRORLEVEL 0 @echo STOP INTEGRATOR FAILED>>servicerestartlog.txt
net stop "SchedulerService"
IF ERRORLEVEL 0 @echo STOP SCHEDULER SUCCESS>>servicerestartlog.txt
IF NOT ERRORLEVEL 0 @echo STOP SCHEDULER FAILED>>servicerestartlog.txt

net start "IntegratorService"
IF ERRORLEVEL 0 @echo START INTEGRATOR SUCCESS>>servicerestartlog.txt
IF NOT ERRORLEVEL 0 @echo START INTEGRATOR FAILED>>servicerestartlog.txt

net start "SchedulerService"
IF ERRORLEVEL 0 @echo START SCHEDULER SUCCESS>>servicerestartlog.txt
IF NOT ERRORLEVEL 0 @echo START SCHEDULER FAILED>>servicerestartlog.txt

exit

【问题讨论】:

  • 您没有指明日志文件的路径,因此,当前的活动目录可能不是您想的那样。
  • 是的,这似乎是问题所在。看来我只需要在编辑操作以更改当前活动目录时设置“开始于”-参数。

标签: batch-file scheduled-tasks windows-server-2012


【解决方案1】:

对我有用的解决方案:

除了我想要运行的脚本的路径之外,我还必须添加脚本应该开始的文件夹。这可以在开始(可选) - 编辑操作下的文本框中进行设置。似乎它毕竟不是那么可选......

【讨论】:

  • 如果文件引用不是相对的,它是可选的。所有相关文件引用都取决于当前活动目录,而不是批处理文件所在的位置。想象一下,当您在另一个目录中工作时,您调用放置在路径中某个位置的批处理文件。文件将在哪里创建?
  • 奇怪的是我没有使用相对文件引用。但是,它仍然需要设置 Start in 参数。
  • 是的,你做到了。对没有完整路径的文件的引用是相对引用。您使用的是>> servicerestartlog.txt,因此,由于文件引用中没有路径,因此假设文件将放在current active directory中,而不是放置批处理文件的文件夹。
  • 哦,我完全误会了!当然!这很有意义!
猜你喜欢
  • 2014-09-14
  • 2014-03-15
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2015-02-23
  • 1970-01-01
相关资源
最近更新 更多