我需要使用 date /t 命令并将日期格式转换为 DD-MM-YYYY_weekday,并列出所有“-”和“_”。我找不到问题的答案。你能帮帮我吗?
答案1
我希望它的格式为 DD-MM-YYYY_weekday
以下是两种解决方案:
- 批处理文件
- PowerShell(简单的一行解决方案)
批处理文件解决方案
首先,不要做什么:
正如在其他答案中所使用的那样,使用
%date%
提供解决方案取决于操作系统的区域设置、区域和语言设置,并且可能提供错误或缺失的信息。例如,我的电脑上的短日期格式根本不输出星期几。
解决问题的正确方法:
wmic
另一方面,使用与操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)无关。
以下批处理文件用于wmic
检索日期和(本地)时间,因此不会遭受使用解决方案的缺点%date%
。
批处理文件还调用 PowerShell 来检索星期几,因为否则无法直接获得星期几。
获取日期.cmd:
@echo off
setlocal
rem get the date
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 day and month with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
rem get day of the week
for /f %%k in ('powershell ^(get-date^).DayOfWeek') do (
set _dow=%%k
)
rem output format required is DD-MM-YYYY_weekday
echo %_day%-%_month%-%_year%_%_dow%
endlocal
示例输出:
F:\test>getdate
06-06-2016_Monday
致谢:
替代的 Powershell 解决方案。
一个简单的一行 PowerShell 解决方案是:
Get-Date -format "yyyy-MM-dd_dddd"
示例输出:
PS F:\test> Get-Date -format "yyyy-MM-dd_dddd"
2016-06-06_Monday
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
- 获取日期- 显示独立于操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)的日期和时间。
- 变量- 提取变量的一部分(子字符串)。
- 西米克- Windows 管理规范命令。
答案2
答案3
这应该可以做到。它使用命令for
来拆分date /t
结果并使用echo
来构造输出。详细信息可以在命令行中制定。
for /f "tokens=1,2,3,4 delims=/ " %a in ('date /t') do echo %b-%c-%d_%a