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

发布于 2024-10-03 23:57:50 字数 366 浏览 4 评论 0原文

我正在尝试编写一个 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
)

这打印出 10/22/2010

我无法弄清楚如何将时间转换为可用的格式。我尝试使用 time /t,但它只提供小时和分钟,而且我还需要秒。

I'm trying to write a cmd script that gets the current date and time and formats it into a way that sqlserver can input it as a datetime.

So far, I have:

@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
)

This prints out 10/22/2010

I have not been able to figure out how to get the time into a usable format. I tried working with time /t, but it only gives the hours and minutes, and I need the seconds also.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

得不到的就毁灭 2024-10-10 23:57:50

使用%TIME% 伪变量。

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

两者都有相同的限制,因为它们取决于您的区域设置。该代码不可移植,在其他环境中您可能会遇到意外的情况。但这就是 cmd 中日期和时间的工作原理。

Use the %TIME% pseudo-variable.

You can also use %DATE% in above script.

Both have the same limitations, in that they depend on your locale. The code is not portable and you'll be up for surprises in other environments. But that's how date and time in cmd works.

此刻的回忆 2024-10-10 23:57:50

另一种方法,其中 %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%

Alternative approach where %TIME% is in format H:MM:SS.FF and H in range 0 - 23 and can be represented with one digit (based on this article):

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%
久随 2024-10-10 23:57:50

以下是我执行bat脚本的方法:

@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

您现在可以删除所有回显并通过键入以下内容从任何bat文件中使用它:

call SetDateTimeVariables.bat

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

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

Here is the way I went about doing my bat script:

@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

You can now remove all the echos and use this from any bat file by typing:

call SetDateTimeVariables.bat

Example: Creating an archive directory and storing the location:

@echo off
SETLOCAL
call test2.bat
ENDLOCAL&(
    SET ARCHIVE_DIR="archive/%YYYY%%MM%%DD%%HH24%%MI%%SS%"
)
MKDIR "%ARCHIVE_DIR%"
ゃ人海孤独症 2024-10-10 23:57:50
echo %time:~-5%

http://ss64.com/nt/syntax-substring.html

最后 5 个字符%time% 始终为秒点毫秒

示例输出:

33.84
echo %time:~-5%

http://ss64.com/nt/syntax-substring.html

the last 5 characters of %time% is always seconds dot milliseconds

example output:

33.84
画中仙 2024-10-10 23:57:50
for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@
echo %day%
echo %DayOfWeek%
echo %hour%
echo %minute%
echo %month%
echo %quarter%
echo %second%
echo %weekinmonth%
echo %year%

输出示例:

10
0
8
3
10
4
5
3
2021

来源:https://www.it-swarm.com.de/de/windows/wie-erhalte-ich-die-aktuelle- uhrzeit-der-windows-befehlszeile-einem-geeigneten-format-fuer-die-verwendung-einem-dateinamen/958474138/

for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@
echo %day%
echo %DayOfWeek%
echo %hour%
echo %minute%
echo %month%
echo %quarter%
echo %second%
echo %weekinmonth%
echo %year%

Output example:

10
0
8
3
10
4
5
3
2021

Source: https://www.it-swarm.com.de/de/windows/wie-erhalte-ich-die-aktuelle-uhrzeit-der-windows-befehlszeile-einem-geeigneten-format-fuer-die-verwendung-einem-dateinamen/958474138/

生活了然无味 2024-10-10 23:57:50

尝试一下,

echo %date:~10,4%-%date:~4,2%-%date:~7,2%_%time:~0,2%-%time:~3,2%-%TIME:~6,2%

它会以 YYYY-MM-DD_HH-MM-SS 的形式打印输出,

您可以在下面的快照中看到

< img src="https://i.sstatic.net/2ww0V.png" alt="在此处输入图像描述">

try it

echo %date:~10,4%-%date:~4,2%-%date:~7,2%_%time:~0,2%-%time:~3,2%-%TIME:~6,2%

it will prints output in form of YYYY-MM-DD_HH-MM-SS

you can see below snapshot

enter image description here

夜深人未静 2024-10-10 23:57:50

for /f "delims=-/,:._ tokens=1,2,3,4,5,6,7,8,9" %a in ("%DATE: =-%_%TIME: =0%") do @echo %a %b %c %d %e %f %g %h %i

将输出如下内容:

Fri 09 19 1969 12 34 56 78

返回(分配的参数):

%a = day_name .. %h = 毫秒(实际上不是百分之一吗?)

(日期和月份可能会根据您的语言环境进行交换)

说明:

  • %DATE% 中的 SPACE 更改为破折号 (-) 以分隔 day_name
  • 更改 SPACE in < code>%TIME% 变为 0(10 小时以下的消毒剂)
  • %DATE%%TIME% 用下划线分隔(_) 和引号
  • 分隔符都是这些符号是

的,有参数 %i 或标记 9 是空的,只是为了
指出这一点并不重要。

for /f "delims=-/,:._ tokens=1,2,3,4,5,6,7,8,9" %a in ("%DATE: =-%_%TIME: =0%") do @echo %a %b %c %d %e %f %g %h %i

will output something like:

Fri 09 19 1969 12 34 56 78

returns (parameters assigned):

%a = day_name .. %h = milliseconds (isn't it actually hundredths?)

(date and month might be swapped according to your locale)

Explanation:

  • change SPACE in %DATE% to become dash (-) to separate day_name
  • change SPACE in %TIME% to become 0 (sanitizer for hour under 10)
  • %DATE% and %TIME% separated by underscore (_) and quoted
  • delimiters are all those symbols

Yes, there's parameter %i or token no 9 that is empty, just to
make a point that that does not matter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文