5

我正在尝试在 Windows 7 批处理作业中使用当前日期。批处理作业会打开多个附加了今天日期的文件。例子:

start \\\Directory_Name\Rpts\20130801\0000A060_FileName_20130801.pdf

start \\\Directory_Name\Rpts\20130801\0000P083_FileName_20130801.pdf

start \\\Directory_Name\Rpts\20130801\00007P12_FileName_20130801.pdf

如果我运行 echo%date%我得到:“Thu 08/01/2013”

我知道我可以运行echo %date:/=%并得到:“Thu 08012013*”

但我想删除“星期四”(今天)并将日期格式化为“20130801”(yyyymmdd)而不是mmddyyyy。

所以最终打开文件命令将如下所示,并%date%插入正确的命令: start \\\Directory_Name\Rpts\%date%\00007P12_FileName_%date%.pdf

有谁知道我该怎么做?

4

4 回答 4

13

一种稳健的、区域不敏感的方法:

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set "dt=%%a"
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-08-02T03:33:56.507 回答
5

这是使用子字符串的一种更简单的方法:

set buildDate=%DATE:~4,10%
set dateStr=%buildDate:~6,4%%buildDate:~3,2%%buildDate:~0,2%
于 2013-08-01T23:06:41.483 回答
5

这是一个独立于本地时间格式的解决方案:

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I

然后%datetime:~0,8%会给你你的YYYYMMDD

于 2013-08-02T20:26:24.063 回答
0

尝试这个。它使用 for 循环来处理日期内容:

for /f "delims=/ tokens=1-3" %%a in ("%date%") do (
rem Lets name our new variable "rdate" for reverse date
set rdate=%%c%%b%%a
)

那应该可以正常工作。只需将其称为 %rdate%。

希望这有帮助,莫娜

于 2013-08-01T22:59:54.420 回答