Há uma solução fácil que é muito mais fácil do que usar o loop " for
".
Vamos usar como saída a saída de dir/o-d
( dir
inverse-ordered by date).
Por exemplo se você quiser enviar as linhas de 1 a 16, use:
dir/o-d|findstr/n ^^|findstr "^[1-9]: ^1[0-6]:"
Por exemplo Se você quiser enviar linhas de 16 a 45, use:
dir/o-d|findstr/n ^^|findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
Exemplo de saída:
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
...
Divisão:
-
Primeiro, despeje toda a saída usando dir/o-d
.
-
Em seguida, prefixar cada linha com " $Num:
" usando findstr/n ^^
-
^
significa coincidir com o início da linha, e ^^
é simplesmente a versão com escape necessária porque estamos em cmd.
-
Observação: você precisa usar findstr
para isso porque find/n" "
não corresponderá a linhas sem espaços '.
-
Por último, corte a saída usando findstr "^1[6-9]: ^[2-3][0-9]: ^4[0-5]:"
.
-
^1[6-9]:
é regex de 16 a 19.
-
^[2-3][0-9]:
é regex para 20 - 39.
-
^4[0-5]:
é regex de 40 a 45.
-
findstr "a b c"
significa encontrar strings que correspondam às expressões a
, b
ou c
.
Veja também o link