首页 > 解决方案 > 从文本文件中的 1 行设置多个变量

问题描述

我正在使用 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

标签: stringdatedatetimebatch-file

解决方案


通过使用您现在使用的相同文件,但通过将变量更改为%mytmp%由于%tmp%是保留的系统变量:

@echo off
set "mytmp=C:\path to temp\file.txt"
for /f "usebackq tokens=1,3,5" %%a in ("%mytmp%") do echo %%a %%b %%c

要像在示例中一样使用它们(无需设置变量):

@echo off
set "mytmp=C:\path to temp\file.txt"
for /f "usebackq tokens=1,3,5" %%a in ("%mytmp%") do (
    echo Date1 [%%a]
    echo Date2 [%%b]
    echo Date3 [%%c]
)

推荐阅读