Khi chạy với đặc tả ký tự đại diện là ...*.txt
nó thất bại
for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location*.txt') do set count=%%C
Lệnh trên sẽ không hoạt động vì bạn không thể chuyển hướng nhiều tệp (đặc tả ký tự đại diện) làm đầu vào find
.
Lệnh sau sẽ hoạt động:
for /f %%C in ('Find /V /C "" %SFTP_INDIR%\Location*.txt') do set count=%%C
Tuy nhiên, tôi không nghĩ rằng nó sẽ cung cấp cho bạn đầu ra mà bạn đang hy vọng.
Điều này là do for /f
lệnh chỉ khớp với Đầu tiên mã thông báo trên dòng, đó là ----------
.
Làm thế nào để tôi có được số lượng hàng trong một biến?
Sử dụng tệp bó sau (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!
chứa số lượng dòng trong mỗi tệp phù hợp.
thay thế *.txt
với tên tệp ký tự đại diện của riêng bạn %SFTP_INDIR%\Location*.txt
count=!_count:~1!
tước không gian hàng đầu từ _count
(có một không gian hàng đầu vì chúng tôi đang sử dụng :
như một dấu phân cách để có được phần cuối của mỗi dòng.
Ví dụ đầu ra:
F:\test>test
5
2
7
5
39
39
75
1
5
0
11
5
F:\test>