我从另一个命令行程序中调用以下程序......
:: NT_getdate.cmd return yumd-date in var='ymd'
@echo on
setlocal
for /F "tokens=2,3,4 delims=/ " %%g in ('echo.^|date /t') do (
set dd=%%g
set mm=%%h
set yy=%%i
)
endlocal& set ymd=%yy%%mm%%dd%
当我从命令行运行程序时,ymd 返回为“20160501”,这正是我想要的。
当我从任务计划程序运行顶级程序时,得到的结果是“1605”
有任何想法吗?
答案1
我希望日期格式为 20160501
当我从命令行运行程序时,ymd 返回为“20160501”,这正是我想要的。
当我从任务计划程序运行顶级程序时,得到的结果是“1605”
提供%date%
解决方案取决于操作系统区域设置、地区和语言设置。这解释了为什么您会得到不同的输出。
wmic
另一方面,使用与操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)无关。
以下批处理文件用于wmic
以 OP 指定的格式检索日期和(本地)时间,因此不会遭受使用 的解决方案的缺点%date%
。
获取日期.cmd:
@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-3" %%g in (`wmic Path Win32_LocalTime Get Day^,Month^,Year ^| findstr /r /v "^$"`) do (
set _day=00%%g
set _month=00%%h
set _year=%%i
)
rem pad with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
set _date=%_year%%_month%%_day%
echo %_date%
endlocal
笔记:
- 上述批处理文件是获取日期。
- 它可以轻松调整以满足您的确切需求。
- 如果你决定你还需要时间(小时,分钟和秒),那么请参阅我的回答在 Windows cmd 中打印日期时间
输出:
F:\test>date /t
01/05/2016
F:\test>GetDate
20160501
F:\test>
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
- 获取日期- 显示独立于操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)的日期和时间。
- 变量- 提取变量的一部分(子字符串)。
- 西米克- Windows 管理规范命令。