38

我需要在 Window*.bat文件中获取今天的日期。之后我想得到日、月和年。我怎样才能做到这一点?
我无法使用 PowerShell

4

5 回答 5

81

这将为您提供DD MM YYYY YY HH Min Sec变量并在 XP Pro 及更高版本的任何 Windows 机器上工作。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
于 2013-10-02T07:10:29.753 回答
36

你得到并像这样格式化

for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
     set dow=%%i
     set month=%%j
     set day=%%k
     set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

注意:以上仅适用于美国地区。它假定输出echo %date%如下所示:Thu 02/13/21. 如果您有不同的 Windows 区域设置,则需要根据您的配置修改脚本。

于 2013-10-02T06:30:46.263 回答
26

%date%会给你日期。

%time%会给你时间。

dateandtime /t命令可能会为您提供更多详细信息。

于 2013-10-02T06:22:08.573 回答
7

独立于语言环境的一个班轮,以获得您喜欢的任何日期格式。我用它来生成档案名称。需要反引号选项,因为 PowerShell 命令行使用单引号。

:: Get date in yyyyMMdd_HHmm format to use with file name.
FOR /f "usebackq" %%i IN (`PowerShell ^(Get-Date^).ToString^('yyyy-MM-dd'^)`) DO SET DTime=%%i

:: Get formatted yesterday date.
FOR /f "usebackq" %%i IN (`PowerShell ^(Get-Date^).AddDays^(-1^).ToString^('yyyy-MM-dd'^)`) DO SET DTime=%%i

:: Show file name with the date.
echo Archive.%DTime%.zip
于 2018-05-15T11:41:44.263 回答
6
set datestr=%date%
set result=%datestr:/=-%
@echo %result%
pause
于 2018-12-21T14:22:30.750 回答