Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file %时间%在用户启动时起作用,但在任务触发时不起作用_Batch File_Cmd_Scheduled Tasks - Fatal编程技术网

Batch file %时间%在用户启动时起作用,但在任务触发时不起作用

Batch file %时间%在用户启动时起作用,但在任务触发时不起作用,batch-file,cmd,scheduled-tasks,Batch File,Cmd,Scheduled Tasks,我有一个批处理文件,它正在使用任务调度器运行。此代码段失败: 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\20

我有一个批处理文件,它正在使用任务调度器运行。此代码段失败:

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\2016063013\Edge
L:\Weekly\20160702

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

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

脚本无法在中午之前运行,因为当我使用%TIME:~0,2%提取小时时,该值被一个空格填充,即“2”。这就是为什么makedir没有包含“\Edge”子目录的原因

以下是更正后的代码段:

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

你是说
L:\Weekly\20160702\Edge
对吗?任务是什么时候运行的?7月2日?如果在上午10:00之前触发,则在%时间%内可能有一个前导空格。使用
date
time
将mkdir中的路径括在一对双引号中和/或添加集合“t=%t:=0%”也取决于语言环境。对于独立于区域设置的解决方案,请改用
wmic
。看到我的答案@JosefZ你一定是对的,然后贴出答案。它创建(或尝试创建)2个目录,这也解释了缺少的
Edge
内容。该死的空间。我今晚要试试@JosefZ的解决方案。