批处理脚本(cmd)产生 DD-MM-YYYY_weekday 格式

批处理脚本(cmd)产生 DD-MM-YYYY_weekday 格式

我需要使用 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

尝试:

echo %date:~7,2%-%date:~4,2%-%date:~10,4%_%date:~0,3%

来源获得操作技巧

答案3

这应该可以做到。它使用命令for来拆分date /t结果并使用echo来构造输出。详细信息可以在命令行中制定。

for /f "tokens=1,2,3,4 delims=/ " %a in ('date /t') do echo %b-%c-%d_%a

相关内容