如何在cmd中检索TIME的秒部分?

cha*_*ama 35 cmd batch-file

我正在尝试编写一个获取当前日期和时间的cmd脚本,并将其格式化为sqlserver可以将其作为输入的方式datetime.

到目前为止,我有:

@echo off
for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
set dow=%%i
set mon=%%j
set day=%%k
set yr=%%l
set mydate=%%j/%%k/%%l
)
Run Code Online (Sandbox Code Playgroud)

这打印出10/22/2010

我无法弄清楚如何将时间变成可用的格式.我尝试过time /t,但它只给出了小时和分钟,我也需要秒.

Joe*_*oey 54

使用%TIME%伪变量.

您也可以%DATE%在上面的脚本中使用.

两者都有相同的限制,因为它们取决于您的语言环境.代码不可移植,您将在其他环境中获得惊喜.但这就是cmd中日期和时间的工作原理.

  • 我希望用它来查看命令需要多少秒...不幸的是,即使命令不是即时的,`echo %time% && command & echo %time%` 总是为两个回显打印相同的时间值。 (3认同)
  • @cowlinator:使用延迟扩展和 `!time!`,因为 `%time%` 在解析时被评估并替换为它的值。 (2认同)

Sta*_*tin 17

替代方法,其中%TIME%的格式为H:MM:SS.FF,H的范围为0 - 23,可用一位数表示(基于本文):

set YYYY=%DATE:~10,4%
set MM=%DATE:~4,2%
set DD=%DATE:~7,2%

set HH=%TIME: =0%
set HH=%HH:~0,2%
set MI=%TIME:~3,2%
set SS=%TIME:~6,2%
set FF=%TIME:~9,2%

set dirName=%YYYY%%MM%%DD%
set fileName=%dirName%\%YYYY%%MM%%DD%_%HH%%MI%%SS%.tmp

echo %fileName%
Run Code Online (Sandbox Code Playgroud)


Scr*_*Dev 7

这是我做蝙蝠脚本的方式:

@echo off
For /f "tokens=2-4 delims=/ " %%a in ("%DATE%") do (
    SET YYYY=%%c
    SET MM=%%a
    SET DD=%%b
)
For /f "tokens=1-4 delims=/:." %%a in ("%TIME%") do (
    SET HH24=%%a
    SET MI=%%b
    SET SS=%%c
    SET FF=%%d
)
echo %%DATE%%=%DATE%
echo %%TIME%%=%TIME%
echo %YYYY%-%MM%-%DD%_%HH24%-%MI%-%SS%-%FF%
echo %YYYY%/%MM%/%DD% %HH24%:%MI%:%SS%
echo %MM%/%DD%/%YYYY% %HH24%:%MI%:%SS%
echo YYYY=%YYYY%
echo MM=%MM%
echo DD=%DD%
echo HH24=%HH24%
echo MI=%MI%
echo SS=%SS%
echo FF=%FF%
pause
Run Code Online (Sandbox Code Playgroud)

您现在可以删除所有回声并通过键入以下命令从任何bat文件中使用此回声:

call SetDateTimeVariables.bat
Run Code Online (Sandbox Code Playgroud)

示例:创建存档目录并存储位置:

@echo off
SETLOCAL
call test2.bat
ENDLOCAL&(
    SET ARCHIVE_DIR="archive/%YYYY%%MM%%DD%%HH24%%MI%%SS%"
)
MKDIR "%ARCHIVE_DIR%"
Run Code Online (Sandbox Code Playgroud)