如何在cmd中检索TIME的秒部分?
我正在尝试编写一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用
%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.
另一种方法,其中 %TIME% 的格式为 H:MM:SS.FF,H 的范围为 0 - 23,并且可以用一位数字表示(基于 这篇文章):
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):
以下是我执行bat脚本的方法:
您现在可以删除所有回显并通过键入以下内容从任何bat文件中使用它:
示例:创建存档目录并存储位置:
Here is the way I went about doing my bat script:
You can now remove all the echos and use this from any bat file by typing:
Example: Creating an archive directory and storing the location:
http://ss64.com/nt/syntax-substring.html
最后 5 个字符%time% 始终为秒点毫秒
示例输出:
http://ss64.com/nt/syntax-substring.html
the last 5 characters of %time% is always
seconds dot milliseconds
example output:
输出示例:
来源: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/
Output example:
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/
尝试一下,
它会以 YYYY-MM-DD_HH-MM-SS 的形式打印输出,
您可以在下面的快照中看到
< img src="https://i.sstatic.net/2ww0V.png" alt="在此处输入图像描述">
try it
it will prints output in form of YYYY-MM-DD_HH-MM-SS
you can see below snapshot
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_nameSPACE
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:
SPACE
in%DATE%
to become dash(-)
to separate day_nameSPACE
in%TIME%
to become0
(sanitizer for hour under 10)%DATE%
and%TIME%
separated by underscore(_)
and quotedYes, there's parameter
%i
or token no 9 that is empty, just tomake a point that that does not matter.