【发布时间】:2020-06-17 16:15:23
【问题描述】:
我正在使用 sqlcmd 将 3 个日期导出到临时文件,所有 3 个日期都在一行中,我需要将它们分开
它们的格式分别为[YYYY-MM-DD HH:MM:SS.000],因此文本文件中的行如下所示:
[YYYY-MM-DD HH:MM:SS.000] [YYYY-MM-DD HH:MM:SS.000] [YYYY-MM-DD HH:MM:SS.000]
set /p date=< %tmp%
setlocal enabledelayedexpansion
set st=%date%
set d1=!st:~0,19!
set d2=!st:~24,43!
set d3=!st:~48,67!
echo Date1 [%d1%]
echo Date2 [%d2%]
echo Date3 [%d3%]
setlocal disabledelayedexpansion
当我运行它时,它应该为每个日期输出[YYYY-MM-DD HH:MM:SS],这适用于第一个日期。
第二个日期输出为[YYYY-MM-DD HH:MM:SS.000 YYYY-MM-DD HH:MM:SS.000],第一个为第二个日期,第二个为第三个日期。
输出第三个日期是[YYYY-MM-DD HH:MM:SS.000],添加.000,即使字符计数在几秒后结束。
【问题讨论】:
-
使用保留变量
%tmp%是个坏主意。打开cmd并输入echo %tmp%你就会明白为什么了。不管怎样,给我看那个日期文件怎么样。我猜不出当前的格式。 -
2020-01-20 12:00:01.000 2020-01-16 10:41:02.000 2020-01-18 16:49:05.000 这就是日期格式,我设置了 %tmp%在文件的前面,所以它不是默认值。
-
" 我在文件的前面设置了 %tmp%,所以它不是默认值。" 是的,我知道,但
%tmp%是一个保留 b> 窗口变量。打开cmd输入echo %tmp%,你就会明白我的意思。而是使用set mytmp,然后使用%mytmp%,但不要使用%tmp%
标签: string date datetime batch-file