tên tệp bắt đầu bằng một chuỗi ở định dạng * .txt đưa ra lỗi trong FOR


1

Tôi có một phần trong kịch bản lô windows của tôi. Nó chạy tốt như:

for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location.20150528060210.txt') do set count=%%C

Nhưng khi chạy thay vì tên mã hóa cứng .txt thì không thành công:

for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location*.txt') do set count=%%C

Tôi không muốn tên mã cứng của tệp .txt. Bất cứ ai có thể đề nghị làm thế nào tôi có thể chọn tên tập tin bắt đầu với "Vị trí" ở đây?

Câu trả lời:


1

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>

David, cho / f %% C trong ('Tìm / V / C ""% SFTP_INDIR% \ Location * .txt') không đặt đếm = %% C không hoạt động. biến "đếm" không lấy bất kỳ giá trị nào. Có cách nào khác để đếm số lượng hàng trong một tệp bằng cách đưa ra một đặc tả ký tự đại diện giả sử chỉ có một tệp bắt đầu bằng Vị trí không? các tệp của tôi thường sẽ có định dạng Vị trí. & lt; time_stamp & gt; .txt do đó tôi cần viết mã chung để chạy trên tệp Vị trí với bất kỳ dấu thời gian nào.
Novice

Vâng. tôi chỉ cần lấy số lượng hàng trong một biến.
Novice
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.