Cmd:使用批处理文件处理%date%变量失败

Imm*_*ant 2 windows for-loop cmd date batch-file

我希望使用batch命令来解析%date%变量,以获取年/月/日,如下所示:

>echo %date
Tue 08/18/2015
Run Code Online (Sandbox Code Playgroud)

我想解析%a = 2015,%b = 08,%c = 18,所以我有.bat如下:

@echo off
rem Get current date and calculate DayOfWeek
for /F "tokens=1-3 delims=/" %%a in ("%date%") do (
   set /A mm=%%a, dd=%%b, yy=%%c
)
Run Code Online (Sandbox Code Playgroud)

但它未能执行,说:

Missing operator.
Run Code Online (Sandbox Code Playgroud)

如何修复我的.bat文件?非常感谢.

Jos*_*efZ 5

使用"delims=/","Tue 08/18/2015"结果中的第一个标记Tue 08.使用

@echo off
rem Get current date and calculate DayOfWeek
for /F "tokens=2-4 delims=/ " %%a in ("%date%") do (
    set /A "_mm=1%%a %% 100"
    set /A "_dd=1%%b %% 100"
    set /A _yy=%%c
)
set _
Run Code Online (Sandbox Code Playgroud)

输出:

==>D:\bat\SO\32062701.bat
_dd=18
_mm=8
_yy=2015
Run Code Online (Sandbox Code Playgroud)

这个set /A "mm=1%%a %% 100"技巧可以防止Invalid number. Numeric constants are either decimal (17), hexadecimal (0x11), or octal (021)错误.阅读整个 set /?http://ss64.com/nt/set.html以获取有关相同数字的十进制(17)与十六进制(0x11)与八进制(021)表示的说明.

八进制公式可能会造成混淆-即先从零为八进制治疗,但所有的数值0809无效的八进制数字.例如,SET /a _month=07将返回值7,但SET /a _month=09将返回错误.

1%%a装置concatecation1和(评价)%%a:结果108,如果%%a计算结果为08.%%模数运算符的批处理表示法.因此,1%%a %% 100指后的(整数)除法的余数108100,即8.

要使脚本区域设置独立,请从WMIC输出中提取值,而不是:

wmic os get LocalDateTime | find "."
Run Code Online (Sandbox Code Playgroud)

或尝试

wmic path Win32_LocalTime get /value
Run Code Online (Sandbox Code Playgroud)