1

在 Windows 命令行中,键入时Date要求我们键入日期值。
但是,如果我们需要将日期更改为一个可以记住的值(而不是键入它)怎么办?

@echo off
set todaysdate=%date%
date 11/11/2012
date %todaysdate%

最后一行显示此错误:The system cannot accept the date entered.然后要求我们输入日期。
那么有什么问题呢?我需要更改变量的类型吗?有可能吗?怎么做?


更新:

问题:多亏了 dbenham,我们现在知道问题出在哪里,Date %todaysdate%它的替代方案Set "Todaysdate=%DATE:/=-%"导致:星期几 + 日期。

示例:Date %todaysdate%and Set "Todaysdate=%DATE:/=-%"(在第一个脚本行)将具有值:Sat 11/24/2012。因此,当我们要求日期(在最后一行)具有此值 Sat 11/24/2012 时,它会失败,因为 date 不接受该值,其中包括星期几 Sat。

解决方案:我现在想到了 2 个解决方案,但我不确定它们是否适用于 cmd。
第一个解决方案是进行测试以查看第一个脚本行设置值是否包括星期几(星期六,星期日...)并修剪星期几。
第二种解决方案是更改第一行变量的类型,因此无论变量具有哪种类型,我们都将其更改为没有星期几的简单日期(星期日,星期一...)

4

3 回答 3

2

当您设置时,todaysdate只取最后 10 个字符(mm/dd/yyyy 或 dd/mm/yyyy 取决于您的语言环境)。这应该工作:

@echo off
set todaysdate=%date:~-10%
date 11/11/2012
date %todaysdate%
于 2012-11-24T16:19:26.993 回答
0

使用命令输出重定向:

@Echo OFF

Set "Todaysdate=%DATE:/=-%"
<NUL Echo %todaysdate%|DATE 


REM A Test
Set "randomDate=22-22-2012"
Echo %randomDate%
Echo %randomDate%|DATE

Pause&Exit
于 2012-11-22T22:29:00.910 回答
0

我不能确定,但​​我会冒险猜测

set todaysdate=%date%
set date=%todaysdate%
于 2012-11-22T18:39:53.180 回答