" for
" Döngüsünü kullanmaktan çok daha kolay olan kolay bir çözüm var .
Çıktıyı örnek olarak dir/o-d
( dir
tarihe göre ters sıralı) alalım.
Örneğin, 1'den 16'ya kadar olan satırları çıktılamak istiyorsanız, şunu kullanın:
dir/o-d|findstr/n ^^|findstr "^[1-9]: ^1[0-6]:"
Örneğin, 16 ila 45 arasındaki satırları çıkarmak istiyorsanız, şunu kullanın:
dir/o-d|findstr/n ^^|findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
Örnek çıktı:
16:08/08/2016 08:43 AM <DIR> nacl_sdk
17:11/05/2016 10:48 PM <DIR> 3b 2
18:28/04/2016 02:47 PM <DIR> sample
19:22/04/2016 10:07 PM <DIR> mysql test
20:16/04/2016 01:22 AM <DIR> 3b
21:16/04/2016 01:10 AM 2,706 errorlog
22:16/04/2016 12:53 AM 0 accesslog
...
Yıkmak:
İlk olarak, kullanarak tüm çıktı dökümü dir/o-d
.
Ardından, her satırı " $Num:
"findstr/n ^^
^
satırın eşleşmesinin başlangıcı anlamına gelir ve ^^
cmd içinde olduğumuz için kaçması gereken bir sürümdür.
Not: Bunun için kullanmanız gerekir, findstr
çünkü find/n" "
boşluk içermeyen çizgilerle eşleşmez.
Son olarak, çıktıyı kullanarak kırpın findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.
^1[6-9]:
16 ila 19 arasında regex'tir.
^[2-3][0-9]:
20 - 39 için regex'tir.
^4[0-5]:
40 ila 45 ° C'dir.
findstr "a b c"
araca ya eslestirilmeye dizeleri bulmak a
, b
ya da c
.
Ayrıca bkz. Https://stackoverflow.com/q/8844868/632951