jimbob, hier ist das, was ich kam mit:
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
Dies ist kann eine wiederverwendbare Skript, wie die Datei und Strings mit den gleichen Ergebnissen geändert werden . Ich habe dein Beispiel kopiert/eingefügt und es hat gut funktioniert.
@Patrick Cuff: Sie Probleme könnten eine ganze Reihe ohne /c zu finden: ".." Teil. Könnte ein Teil des Problems gewesen sein, aber dann wird mein Skript vielleicht die gleichen Ergebnisse/Probleme geben ... Lebe und lerne, denke ich.
______Notes__________
set file =: diese in die Datei ein (und den Pfad, falls erforderlich) der Datei gescannt werden.
Aufruf: grep "Zeichenfolge": Rufen Sie die: Grep-Funktion mit der Zeichenfolge zu finden.
set var =% grep%: Setzen Sie eine Variable (hier Dateien und Größe) auf die Antwort von: grep.
: grep Funktion: Es sieht zuerst in der% Datei% für die "% string%", dann parse es auf das Zeichen ":", behält den rechten Teil. Dann parsen Sie es erneut mit "Leerzeichen" und behalten das erste Wort. Die Funktion gibt die Variable% grep% zurück, die die gefundene Zeichenfolge enthält.
Wie bei meinen üblichen Antworten hoffe ich, dass dies hilft.
Ich habe einige Tests durchgeführt, dieses Skript (mit 'echo' entfernt) führt 3500times/s auf meiner Box, 22000 mal/s beim Laden der Datei ist nur einmal getan. Ich freue mich auf andere Lösungen mit Kopf, Schwanz, Schnitt und Katze;) –
Das sieht aus wie eine ausgezeichnete Bash-Antwort, aber ich denke, er könnte auf Windows sein. Siehe Stapel- und cmd-Tags – Andy