2016-12-07 161 views
0

我想創建一個使用TIME以特定方式格式化的文件夾。我希望格式在hh.mm.ss中,因爲您不能在文件夾名稱中使用:時間格式和前導/尾隨零/空格

當我使用set CurTime=%time:~0,2%.%time:~3,2%.%time:~6,2%時,我得到一個在上午10:00之前有空格的輸出和五個尾隨空格(不知道爲什麼)。我可以通過添加set CurTime=%CurTime: =%行來刪除空格,但如果時間早於上午10:00,我想添加前導零。

我該怎麼做?

編輯澄清: 我有時間格式化我想要的方式,但我想用0代替前導空格,如果hh部分小於10。這不是How to get current datetime on Windows command line, in a suitable format for using in a filename?的重複問題。

+2

如果您在運行命令時提供'Echo =%TIME%'輸出以及預期輸出和實際輸出,將會有所幫助。 – Compo

+0

命令'set「CurTime =%TIME :: =。%」'會用'.'替換':',順便說一句...... – aschipfl

+0

'echo%time%'會給出格式爲hh: mm:ss.dd其中hh可以包含前導空格,dd是毫秒。我根本不需要毫秒,我想確保最終的結果會有一個前導零而不是空格。 –

回答

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 
+0

將時間分解成單獨的HH,Min和Sec組件。通過添加一個'set HH =%HH:= 0%'行,我可以確保如果在一小時內有空間,它將被替換爲0.謝謝! –

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 
0
set "mytime=%time:~0,-8%" 
set "mytime=%mytime: =0%" 
set "mytime=%mytime::=.%" 
echo "%mytime%" 

應該表現出你想要的結果。第一行刪除time(應該是5個空格+ .dd)中的最後8個字符,另外兩個字符替換不需要的字符。

5個尾隨空格的原因可能是某些時間格式允許「a.m.」簡單的方法是簡單地用空格替換不需要的部分。

相關問題