Quando executado com uma especificação curinga de ...*.txt
, ele falha
for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location*.txt') do set count=%%C
O comando acima não funcionará porque você não pode redirecionar vários arquivos (uma especificação de curinga) para ser a entrada para find
.
O seguinte comando funcionará:
for /f %%C in ('Find /V /C "" %SFTP_INDIR%\Location*.txt') do set count=%%C
No entanto, não acho que isso lhe dará a saída que você espera.
Isso ocorre porque o comando for /f
corresponde apenas ao token primeiro na linha, que é ----------
.
Como obtenho o número de linhas em uma variável?
Use o seguinte arquivo de lote (test.cmd):
@echo off
setlocal
setlocal EnableDelayedExpansion
for /f "tokens=2 delims=:" %%c in ('Find /V /C "" *.txt') do (
set _count=%%c
set count=!_count:~1!
echo !count!
)
-
!count!
contém o número de linhas em cada arquivo correspondente. -
substitua
*.txt
por seu próprio nome de arquivo curinga%SFTP_INDIR%\Location*.txt
-
count=!_count:~1!
retira o espaço inicial de_count
(há um espaço principal porque estamos usando:
como um delimitador para obter a última parte de cada linha.
Exemplo de saída:
F:\test>test
5
2
7
5
39
39
75
1
5
0
11
5
F:\test>