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文件?非常感谢.
使用"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)表示的说明.
八进制公式可能会造成混淆-即先从零为八进制治疗,但所有的数值
08和09无效的八进制数字.例如,SET /a _month=07将返回值7,但SET /a _month=09将返回错误.
1%%a装置concatecation串1和(评价)%%a:结果108,如果%%a计算结果为08.%%是模数运算符的批处理表示法.因此,1%%a %% 100指后的(整数)除法的余数108由100,即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)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |