时间格式和前导/尾随零/空格

时间:2016-12-07 14:12:10

标签: batch-file time

我想创建一个使用TIME以特定方式格式化的文件夹。我希望格式为hh.mm.ss,因为您无法在文件夹名称中使用:

当我使用set CurTime=%time:~0,2%.%time:~3,2%.%time:~6,2%时,我会在上午10:00之前获得一个带有前导空格的输出和五个尾随空格(不确定原因)。我可以通过添加行set CurTime=%CurTime: =%来删除空格,但如果时间早于上午10:00,我想添加前导零。

我该怎么做?

编辑以澄清: 我有时间格式化我想要的方式,但如果hh部分小于10,我想用0替换前导空格。这不是How to get current datetime on Windows command line, in a suitable format for using in a filename?的重复问题。

3 个答案:

答案 0 :(得分:1)

如果您已阅读此内容==> Windows batch file redirect output to logfile with date/time

你可以这样做:

@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%"
pause
echo datestamp: "%datestamp%"
pause
echo timestamp: "%timestamp%"
pause
set MyVar=%HH%.%Min%.%Sec%
echo My desired Variable in this format hh.mm.ss to use is : %MyVar%
pause
mkdir "c:\%MyVar%"
pause

答案 1 :(得分:0)

有很多方法可以实现目标。

这是一个疯狂的未经测试的人:

@ECHO OFF
SET "CurTime="
FOR /F "TOKENS=2-4 DELIMS=: " %%A IN ('ROBOCOPY/NJH /L "\|" NULL'
) DO IF NOT DEFINED CurTime SET "CurTime=%%A.%%B.%%C"
ECHO(%CurTime%
TIMEOUT -1

答案 2 :(得分:0)

set "mytime=%time:~0,-8%"
set "mytime=%mytime: =0%"
set "mytime=%mytime::=.%"
echo "%mytime%"

应显示您想要的结果。第一行从time(应该是5个空格+ .dd)中删除最后8个字符,另外两个字符替换不需要的字符。

5个尾随空格的原因可能是某些时间格式允许“a.m.”简单的方法是简单地用空格替换不需要的部分。