Скопируйте содержимое одного файла и вставьте в другой текстовый файл на основе даты - PullRequest
0 голосов
/ 17 мая 2018

У меня есть файл с именем C: \ Submitlogs \ SubmitLog.txt

Log file content:
--------------
User01,15/05/2018,10:26,Submit,CATERGORY1,WEEK46
User01,17/05/2018,10:29,Submit,CATERGORY1,WEEK46
User04,17/05/2018,11:04,Submit,CATERGORY1,WEEK46
User11,17/05/2018,11:09,Submit,CATERGORY1,WEEK46

Итак, если системной датой является 17/05/2018, то пакетный сценарий должен скопировать только содержимое (упомянутое ниже) из вышеприведенного, которое относится к 17/05/2018, и вставить его в C: \ Submitlogs \ Copy. TXT

User01,17/05/2018,10:29,Submit,CATERGORY1,WEEK46
User04,17/05/2018,11:04,Submit,CATERGORY1,WEEK46
User11,17/05/2018,11:09,Submit,CATERGORY1,WEEK46

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

@echo off
setlocal enableextensions

set sysdt=%date:~-7,2%/%date:~-10,2%/%date:~-4,4%
echo %sysdt%
set "source=C:\Submitlogs"
set "target=C:\Submitlogs\Copy.txt"
pushd "%source%" 
(for /f "tokens=1,* delims=," %%a in ('findstr /i /C:%sysdt% "SubmitLog.txt"') do ( 
echo(%%b )) > "%target%" 
popd

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

Токовый выход:

17/05/2018,10:29,Submit,CATERGORY1,WEEK46
17/05/2018,11:04,Submit,CATERGORY1,WEEK46
17/05/2018,11:09,Submit,CATERGORY1,WEEK46

Ожидаемый результат:

User01,17/05/2018,10:29,Submit,CATERGORY1,WEEK46
User04,17/05/2018,11:04,Submit,CATERGORY1,WEEK46
User11,17/05/2018,11:09,Submit,CATERGORY1,WEEK46

1 Ответ

0 голосов
/ 17 мая 2018

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

Этот метод использует команду RoboCopy:

@Echo Off
Set "parent=C:\Submitlogs"
Set "source=SubmitLog.txt"
Set "target=Copy.txt"

If Not Exist "%parent%\%source%" Exit /B
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do Set "moment=%%C/%%B/%%A" & GoTo :Break
:Break
Find "%moment%"<"%parent%\%source%">"%parent%\%target%"
...