jimbob, вот что я придумал:
delfiles.cmd
@echo off
set file=clean.txt
call :grep "Number of files to delete:"
set files=%grep%
call :grep "Total size of files to delete:"
set size=%grep%
echo %Files% files of a total size of %size% are to be deleted.
exit /b 0
:grep
setlocal
for /F "tokens=2 delims=:" %%i in ('findstr /i /c:"%~1" "%file%"') do (
for /F "tokens=1 delims= " %%j in ("%%i") do set _find=%%j
)
endlocal& set grep=%_find%
exit /b 0
Это многоразовый сценарий, как файл и строки могут быть изменены с теми же результатами , Я скопировал/вставлял ваш пример, и он работал хорошо.
@Patrick манжета: вы можете столкнуться с проблемами поиска целой строки без /с: «..» часть. Возможно, это часть проблемы, но тогда, возможно, мой сценарий даст те же результаты/проблемы ... Живи и узнай, я думаю.
______Notes__________
набор файлов =: Установите в файл (и путь, в случае необходимости) из файла, подлежащего проверке.
call: grep "string": Вызов функции grep со строкой для поиска.
var =% grep%: Задайте переменную (здесь файлы и размер) для ответа от: grep.
: grep function: Сначала он просматривает% file% для «% string%», затем анализирует его символом «:», сохраняя правую часть. Затем он снова анализирует «пробелы» и сохраняет первое слово. Функция возвращает переменную% grep%, содержащую найденную строку.
Как и мои обычные ответы, я надеюсь, что это поможет.
Я проверил несколько тестов, этот скрипт (с удаленным «echo») выполняет 3500 раз/с на моем ящике, 22000 раз/с при загрузке файла выполняется только один раз. С нетерпением ждем других решений с головой, хвостом, вырезом и кошкой;) –
Это выглядит как отличный ответ bash, но я думаю, что он может быть в Windows. См. Теги batch и cmd. – Andy