Quando executado com uma especificação curinga de ...*.txt 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 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, eu não acho que isso vai te dar a saída que você está esperando.
Isso é porque o seu for /f comando corresponde apenas ao primeiro token na linha, que é ----------.
Como faço para obter o número de linhas em uma variável?
Use o seguinte arquivo em lotes (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.
substituir *.txt com seu próprio nome de arquivo curinga %SFTP_INDIR%\Location*.txt
count=!_count:~1! tira o espaço principal de _count (existe um espaço líder 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>