Обработка и разбиение строк в пакетных файлах - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно обработать текстовый файл, который содержит кучу событий, которые выглядят как

event_name1 : dd.mm.yyyy
event_name2 : dd.mm.yyyy
...
enemt_nameN : dd.mm.yyyy

Я не знаю, сколько строк перед руками

тогда я должен извлечь дату из каждой строки и разобрать ее, чтобы найти дату, которую я ищу. если нужна та дата, мне нужно повторить название события и продолжить поиск

Я могу анализировать файл построчно, но тогда строка не будет разбита. Везде, где я использую одну и ту же команду, как вы можете видеть ниже

    @echo off

    rem parsing today's date and saving variables i will need later
    echo %date%
    for /f "tokens=1-3 delims=-" %%a in ("%date%") do (
    set day = %%a
    set month = %%b
    set year = %%c
    )

    rem parsing the file with events
    FOR /F "tokens=*" %%i IN (Dates.txt) DO (

    rem trying to work with the current line
    for /f "tokens=1-3 delims= " %%j in (%%i) do (
    set /f name = %%a
    set /f inputdate = %%c

    rem doing stuff with the date in the line, i need to parse it by day, month and year
    for /f "tokens=1-3 delims=." %%k in (%inputdate%) do (
    if /I "%day%" EQU %%a echo %inputdate%
    )
    )
    )

Я ожидаю, что строка будет разделена нормально, однако, я продолжаю получать сообщение об ошибке типа "невозможно найти файл имя-события" в каждом цикле, когда я пытаюсь проанализировать строку

Вывод эха в cmd выглядит следующим образом, например:

    (for /F "tokens=1-3 delims= " %j in (tomorrow : 12.06.2019) do (
    set /f name = %a
    set /f inputdate = %c
    for /F "tokens=1-3 delims=." %k in ((null)) do (if /I "" EQU %a echo  
    )
    ) )
    Unable to find the file tomorrow.

1 Ответ

0 голосов
/ 11 июня 2019

Когда я правильно понимаю, что вы пытаетесь сделать, должно быть достаточно одной строки:

for /f "delims=:" %%a in ('type Dates.txt^|find "%date%"') do @echo %%a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...