Існує просте рішення, яке набагато простіше, ніж використання forциклу " ".
Візьмемо як приклад результат з dir/o-d( dirобернено упорядкований за датою).
Наприклад, якщо ви хочете вивести рядки 1-16, використовуйте:
dir/o-d|findstr/n ^^|findstr "^[1-9]: ^1[0-6]:"
Наприклад, якщо ви хочете вивести рядки 16 на 45, використовуйте:
dir/o-d|findstr/n ^^|findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
Вибірка зразка:
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
...
Зламатися:
По-перше, скиньте весь вихід, використовуючи dir/o-d.
Далі додайте кожен рядок, використовуючи " $Num:"findstr/n ^^
^означає збіг початку рядка, і ^^це просто необхідна версія, яка потрібна, тому що ми знаходимося в cmd.
Примітка: findstrдля цього вам потрібно скористатися, оскільки find/n" "не буде відповідати рядкам без пробілів`.
Нарешті, обріжте вихід, використовуючи findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:".
^1[6-9]: це регулярне вираження для 16-19.
^[2-3][0-9]: становить 20 - 39.
^4[0-5]: це регекс для 40 до 45.
findstr "a b c"засоби пошуку рядків , які відповідають або виразу a, bабо c.
Також дивіться /programming//q/8844868/632951