【问题标题】:%Time% Works When User Initiated But Not When Task Is Triggered [duplicate]%Time% 在用户启动时有效,但在触发任务时无效[重复]
【发布时间】:2016-07-21 17:03:17
【问题描述】:

我有一个正在使用任务计划程序运行的批处理文件。这个 sn-p 失败了:

Set mm=%DATE:~4,2%
Set dd=%DATE:~7,2%
Set yyyy=%DATE:~10,4%
set t=%TIME:~0,2%

mkdir L:\Weekly\%yyyy%%mm%%dd%%t%\Edge

当我启动任务时,会创建这个目录:

L:\Weekly\2016063013\Edge

但是,当任务通过预定触发器运行时,会创建此目录:

L:\Weekly\20160702

我很难调试此错误。我需要一个小时来区分事件后手动触发的备份与正常的夜间/每周自动例程。

【问题讨论】:

  • 你的意思是L:\Weekly\20160702\Edge 对吗?任务何时运行? 7 月 2 日?
  • 如果在上午 10:00 之前触发,则 %time% 中可能有前导空格。将 mkdir 中的路径用双引号括起来和/或添加 set "t=%t: =0%"
  • 使用 datetime 也取决于语言环境。对于独立于语言环境的解决方案,请改用wmic。看我的回答Print datetime in Windows cmd
  • @JosefZ 您一定是对的并发布了答案。它创建(或尝试创建)2 个目录,这也解释了缺少的 Edge 东西。该死的空间。
  • 今晚我正在尝试@JosefZ 的解决方案。

标签: batch-file cmd scheduled-tasks


【解决方案1】:

@JosefZ 在对我的问题的评论中为我解决了这个问题。

脚本未能在中午之前运行,因为当我用 %TIME:~0,2% 拉出小时时,该值被一个空格填充,即 “2”强>。这就是 ma​​kedir 不包含 "\Edge" 子目录的原因。

这里是修正后的 sn-p:

Set mm=%DATE:~4,2%
Set dd=%DATE:~7,2%
Set yyyy=%DATE:~10,4%
Set t=%TIME:~0,2%

::replace space with a zero
Set t=%t: =0%

mkdir L:\Weekly\%yyyy%%mm%%dd%%t%\Edge

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2014-11-21
    相关资源
    最近更新 更多