Пакетный сценарий — конечный результат FINDSTR?

У меня есть сценарий резервного копирования, который выводит

Backup %DIRNAME% %TIME% >>Results.txt Это выглядит так:

Резервная копия B:\Backup\Documents 92

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

Я пробовал FINDSTR /r "^[1-9][0-9]*$ ^0$" results.txt

Но это ничего не делает, я знаю, что это работает, потому что если я создаю rand.txt с rand num, findstr выводит то, что находится в этом файле. Может быть, есть одна для последней записи в файле

нравится FINDSTR "[1-9][0-9]\.$" results.txt

- Позже понял в командной строке, что мы можем сделать

FOR /F "eol=; tokens=3* delims=, " %i in (results.txt) do @echo %j %k

На самом деле может быть так же просто, как

FOR /F " tokens=3* delims=, " %I in (results.txt) do @echo %I>timeresult

type timeresult

Это также означает, что мы можем конкатенировать случайные результаты в .txt, но результаты, которые мы хотим извлечь, не забудьте не ставить в начале.

Все еще форматируете это для партии?

Также возникает новый вопрос, как поместить это в переменную?

Мое предположение было

FOR /F "eol=; tokens=3* delims=, " %i in (results.txt) do ( set result= %j %k


Отвечено: Да, ответил на мой собственный вопрос... Не знаю, почему я пытался все усложнить.

Таким образом, это захватывает токен 3, устанавливает var T для времени в результатах, а затем делает пригодную для использования переменную позже.

FOR /F "tokens=3" %%T в (results.txt) сделать ( установить vartmp=%%T )

Удивительно, что происходит, когда ты уходишь, берешь кофе и занимаешься чем-то другим, лол. Ты такой, почему... разве я не напечатал это.

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


person Abberix    schedule 30.01.2014    source источник
comment
Первое, что нужно сделать, это уточнить, что вы подразумеваете только под выходом из времени. Возможно, если бы вы сказали, какой формат вы используете для %time% и что вы хотите создать, мы смогли бы лучше помочь.   -  person Magoo    schedule 30.01.2014
comment
Вывод из Backup 2: Backup B:\Backups\documents 92seconds Это вывод из другого скрипта Тогда я хотел сделать for in ('FINDSTR /r ^[1-9][0-9]*$ ^0 $ results.txt') do ( set result=%%VAR? ), то это приводит к другому, который я еще не понял. ~ Установка найденной строки в переменную, чтобы я мог использовать эхо Время, затраченное на резервное копирование последних документов %bkResultTime%   -  person Abberix    schedule 30.01.2014


Ответы (2)


@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (q21446192.txt) DO CALL :lastnum %%a

GOTO :EOF

:lastnum
SET "elapsed=%~2"
IF DEFINED elapsed shift&GOTO lastnum
SET "elapsed=%~1"
SET /a total=0
:numlp
FOR /l %%n IN (0,1,9) DO IF "%elapsed:~0,1%"=="%%n" SET /a total=%%n+10*total&SET elapsed=%elapsed:~1%&GOTO numlp
if "%elapsed%"=="%~1" GOTO :eof
ECHO %total%
GOTO :eof

Я использовал файл с именем q21446192.txt для своего тестирования, который содержал один элемент данных, который вы нам дали. Он произвел 92

%time% — магическая переменная. CMD установит текущее время в пользовательском формате, но будет переопределено пользовательской переменной. Предполагается, что это значение по умолчанию для SO.

person Magoo    schedule 30.01.2014

Это даст последний набор чисел в строке

type Results.txt|repl "^.* (\d+).*$" "$1" >newfile.txt

При этом используется вспомогательный пакетный файл с именем repl.bat — загрузите с: https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

Поместите repl.bat в ту же папку, что и пакетный файл, или в папку, которая находится по пути.

Отредактировано в соответствии с комментариями:

person foxidrive    schedule 30.01.2014
comment
Мне понравилась работа repl.bat, но, к сожалению, он возвращает те же данные, что и в results.txt. - person Abberix; 30.01.2014
comment
Я заметил, что в вашем ответном комментарии есть 92seconds, и вы никак не можете получить это от %time%, если только вы неправильно не использовали имя переменной времени. Формат времени в ваших файлах должен быть известен, с пробелами и т.д. - person foxidrive; 30.01.2014
comment
Плохо, извините, %time% — это время, затраченное на завершение, которое теперь явно изменено на %timetakentocomple%, а фактическое время — это %date% со временем, связанным с ним. Я понял из нового, например, я хотел попробовать, что я могу просто сделать FOR /F tokens=2,3* delims=, %i in (results.txt) do @echo %j %k но как мне это выразить и var для работы в пакетном режиме (обновленный исходный вопрос) - person Abberix; 30.01.2014