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

Batch file 时间格式和前导/尾随零/空格,batch-file,time,Batch File,Time,我想创建一个使用时间以特定方式格式化的文件夹。我希望格式为hh.mm.ss,因为您不能在文件夹名称中使用: 当我使用set CurTime=%time:~0,2%。%time:~3,2%。%time:~6,2%时,我会在上午10:00之前得到一个前导空格和五个尾随空格的输出(不知道为什么)。我可以通过添加行set CurTime=%CurTime:=%来删除空格,但如果时间早于上午10:00,我希望添加前导零 我该怎么做 编辑以澄清: 我已经按照我想要的方式格式化了时间,但是如果hh部分小于10

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

当我使用
set CurTime=%time:~0,2%。%time:~3,2%。%time:~6,2%
时,我会在上午10:00之前得到一个前导空格和五个尾随空格的输出(不知道为什么)。我可以通过添加行
set CurTime=%CurTime:=%
来删除空格,但如果时间早于上午10:00,我希望添加前导零

我该怎么做

编辑以澄清: 我已经按照我想要的方式格式化了时间,但是如果hh部分小于10,我想用0替换前导空格。这不是一个重复的问题。

如果你读过这篇==>

您可以这样做:

@echo关闭
对于/f“delims=“%”中的%%a('wmic OS Get localdatetime^ | find“”),请设置dt=%%a
设置日期戳=%dt:~0,8%
设置时间戳=%dt:~8,6%
设置YYYY=%dt:~0,4%
设置MM=%dt:~4,2%
设置DD=%dt:~6,2%
设置HH=%dt:~8,2%
设置最小值=%dt:~10,2%
设置秒=%dt:~12,2%
设置戳记=%YYYY%-%MM%-%DD%\uuhh%-%Min%-%Sec%
回显戳记:“%stamp%”
暂停
回显邮戳:“%datestamp%”
暂停
回显时间戳:“%timestamp%”
暂停
设置MyVar=%HH%。%Min%。%Sec%
echo我希望使用的格式为hh.mm.ss的变量为:%MyVar%
暂停
mkdir“c:\%MyVar%”
暂停
如果您已阅读此==>

您可以这样做:

@echo关闭
对于/f“delims=“%”中的%%a('wmic OS Get localdatetime^ | find“”),请设置dt=%%a
设置日期戳=%dt:~0,8%
设置时间戳=%dt:~8,6%
设置YYYY=%dt:~0,4%
设置MM=%dt:~4,2%
设置DD=%dt:~6,2%
设置HH=%dt:~8,2%
设置最小值=%dt:~10,2%
设置秒=%dt:~12,2%
设置戳记=%YYYY%-%MM%-%DD%\uuhh%-%Min%-%Sec%
回显戳记:“%stamp%”
暂停
回显邮戳:“%datestamp%”
暂停
回显时间戳:“%timestamp%”
暂停
设置MyVar=%HH%。%Min%。%Sec%
echo我希望使用的格式为hh.mm.ss的变量为:%MyVar%
暂停
mkdir“c:\%MyVar%”
暂停

实现目标的方法有很多

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

@ECHO关闭
设置“CurTime=”
对于/F“TOKENS=2-4 DELIMS=:”%%A IN('ROBOCOPY/NJH/L“\\\\”NULL'
)如果未定义CurTime,请不要设置“CurTime=%%A.%B.%C”
回音(%CurTime%)
超时-1

实现目标的方法有很多

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

@ECHO关闭
设置“CurTime=”
对于/F“TOKENS=2-4 DELIMS=:”%%A IN('ROBOCOPY/NJH/L“\\\\”NULL'
)如果未定义CurTime,请不要设置“CurTime=%%A.%B.%C”
回音(%CurTime%)
超时-1
应显示所需的结果。第一行删除
时间
中的最后8个字符(应为5个空格+
.dd
),另外两行替换不需要的字符

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

应显示所需的结果。第一行删除
时间
中的最后8个字符(应为5个空格+
.dd
),另外两行替换不需要的字符


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

如果您在运行命令时提供
Echo=%time%
输出以及预期和实际输出,这会有所帮助。命令
设置“CurTime=%time::=。%”
将用
替换
,顺便说一句…
echo%time%
将以hh:mm:ss.dd格式给出一个结果,其中hh可以包含前导空格,dd是毫秒。我根本不需要毫秒,我想确保最终结果的前导零而不是空格。的可能重复如果您在运行命令时提供您的
Echo=%TIME%
输出以及预期和实际输出,则会有所帮助。命令
设置“CurTime=%TIME::=。%”
将用
替换
,顺便说一句…
echo%time%
将以hh:mm:ss.dd格式给出一个结果,其中hh可以包含前导空格,dd是毫秒。我根本不需要毫秒,我想确保最终结果的前导零而不是空格。的可能重复将时间分解为单独的HH、Min和Sec组件是有效的。通过添加
设置HH=%HH:=0%
行,我可以确保如果小时中有空格,它将被替换为0。谢谢!将时间分解为单独的HH、Min和Sec组件是有效的。通过添加
设置HH=%HH:=0%
行,我可以请确保如果小时内有空格,它将替换为0。谢谢!
set "mytime=%time:~0,-8%"
set "mytime=%mytime: =0%"
set "mytime=%mytime::=.%"
echo "%mytime%"