Windows 批处理脚本将 run_dt=1/3/2015 拆分为 "/"

标签 windows batch-file

在条件成功的情况下,我试图用“/”拆分日期并再次连接为 01032015。以下代码有效,但是当我将其保持在 if 条件时,它失败了。

set date_only=%dateparam:*dt= =%
echo %date_only%

REM above line prevents unexpected results when input string has less than two /

set mm=%date_only:*/=%
echo !mm!
set yyyy=%mm:*/=%
echo !yyyy!
set dd=!date_only:/%mm%=!
echo !dd!
set dd=!dd:~3,2!
echo !dd!
set mm=!mm:/%yyyy%=!
echo !mm!
set yyyy=!yyyy:~0,4!

echo.%dd%
echo.%mm%
echo.%yyyy%

在if条件下,上面的内容变成了下面的内容

if "%isDateFound%" == "true" (
echo %isDateFound%

set date_only=%dateparam:*dt= =%
    echo !date_only!
set mm=!!date_only:*/=!
echo month 
echo !mm!
set yyyy=!!mm:*/=!
echo year
echo !yyyy!
set dd=!!date_only:/!mm!=!!
echo date
echo !dd!
set dd=!dd:~3,2!
set mm=!!mm:/%yyyy%=!
set yyyy=!yyyy:~0,4!
echo !dd!
echo !mm!
echo !yyyy!
)   

由于延迟表达式,看起来像 set dd=!!date_only:/!mm!=!!不工作。如何在 if 条件下引用变量。

是否有更好的方法获取 dd mm yyyy ?

谢谢。

最佳答案

像这样尝试:

@echo off
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%
Set MaDate=%day%/%month%/%year%
Set MyTime=%hour%:%min%:%secs%
echo %MaDate%
echo %MyTime%
set DateTimeFile=%year%_%month%_%day%_%hour%_%min%_%secs%.log
echo DateTimeFile=%DateTimeFile%
pause

或者我从 foxidrive 得到了另一个解决方案:

::From foxidrive
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set datestamp=%dt:~0,8%
set timestamp=%dt:~8,6%
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 stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
echo stamp: "%stamp%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
pause

关于Windows 批处理脚本将 run_dt=1/3/2015 拆分为 "/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408090/

相关文章:

windows - virtualbox 持续安装错误

.net - Subversion 保存到哪里?

batch-file - 为什么我的计划任务正确更新了它的 'Last Run Time',并给出了 'Last Run Result' 的 '(0x0)',但仍然没有真正工作?

command-line - 批处理文件中的字符串替换

windows - 批处理\CMD : Check if Apache is running else start it

c - 与 sscanf 一起使用的格式说明符 %n 不返回字符数

c# - DateTime ParseExact 在其他服务器上的不同行为

windows - 在没有用户登录的情况下在 Windows 启动时运行脚本

java - 如何捕获批处理执行的 EXE 返回的数据?

batch-file - 试图批量制作 “OS”