Установка нескольких переменных из 1 строки в текстовом файле - PullRequest
0 голосов
/ 05 марта 2020

Я использую 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, даже если счет символов заканчивается через секунды.

1 Ответ

2 голосов
/ 05 марта 2020

, используя тот же файл, который вы используете сейчас, но изменив переменную на %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]
)
...