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
*.txtpor 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>