Windows 如何在BAT文件中获取日期

Windows 如何在BAT文件中获取日期,windows,batch-file,Windows,Batch File,我需要在Window*.bat文件中获取今天的日期。在它之后,我想得到一天,一个月,一年。我该怎么做? 我无法使用PowerShell%date%将为您提供日期 %time%将为您提供时间 date和time/t命令可能会为您提供更多详细信息。您会得到如下格式 for /f "tokens=1-4 delims=/ " %%i in ("%date%") do ( set dow=%%i set month=%%j set

我需要在Window
*.bat
文件中获取今天的日期。在它之后,我想得到一天,一个月,一年。我该怎么做?

我无法使用PowerShell

%date%
将为您提供日期

%time%
将为您提供时间


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

您会得到如下格式

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区域设置,则需要根据您的配置修改脚本。

这将为您提供
DD-MM-yyy-YY-HH-Min-Sec
变量,并可在XP Pro及更高版本的任何Windows计算机上运行

@echo关闭
对于/f“tokens=2 delims==”('wmic OS Get localdatetime/value')中的%%a,请设置“dt=%%a”
设置“YY=%dt:~2,2%”和设置“yyy=%dt:~0,4%”和设置“MM=%dt:~4,2%”和设置“DD=%dt:~6,2%”
设置“HH=%dt:~8,2%”和设置“Min=%dt:~10,2%”和设置“Sec=%dt:~12,2%”
设置“日期戳=%YYYY%%MM%%DD%”和设置“时间戳=%HH%%Min%%Sec%”
设置“fullstamp=%YYYY%-%MM%-%DD%\uuhh%-%Min%-%Sec%”
回显邮戳:“%datestamp%”
回显时间戳:“%timestamp%”
回显fullstamp:“%fullstamp%”
暂停

独立于语言环境的一行程序,可获取您喜欢的任何日期格式。我使用它来生成归档文件名。由于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

只需磁带[echo%date%]或[echo%date%>>“test.txt”]即可将日期保存在新文本中file@MehdiBugnard似乎它不是用于用户输出,而是用于在另一批中使用它…这取决于计算机上的区域设置。如果它能工作,那就很好了,但它不是一个健壮的方法。您最好补充一点,您的解决方案适用于英语语言环境。特别是在我的案例中,日期如下
01.12.2015
,因此此解决方案可能有所帮助(这很好),但其价值有限。明确限制,我想你可能会得到更多的投票。@Wolf有许多不同的英语地区,有不同的日期格式,比如AU、UK、US…@LưuVĩnhPhúc是的,这是真的。我的意思是要明确地将其限制添加到所示的解决方案中:)我从未期望在这里找到这样一个有用的工具:-感谢您的介绍:-)当在命令行上手动运行时,我必须从%%a:for/f“tokens=2 delims==%a in('wmic OS Get localdatetime/value')中删除额外的%%a,并设置“dt=%a”(但是当你把它放到脚本中时,你需要额外的%)这太棒了。谢谢!
set datestr=%date%
set result=%datestr:/=-%
@echo %result%
pause