Bộ đếm tệp không hoạt động ngay trong tệp bó


1

Tôi muốn có một vòng lặp trong một tệp bó và trong mỗi lần thực hiện tôi muốn đếm số lượng tệp trong một thư mục. Vấn đề là bộ đếm trong thực thi fisrt luôn không xác định và làm cho tập lệnh không thể sử dụng được.

loop:
@set /a counter=%counter%+1 
@if %counter% GTR 2 (
@set file_counter=0
for %%x in ("%Stckalz_Input%\%Directory_Stckalz_Job%\Results\*") do (set /a file_counter+=1)
@echo Server is busy or not responding. %file_counter%
)
goto loop

Khái niệm là chờ một số vòng lặp cho đến khi chương trình kết thúc. Khi thư mục Kết quả trống thì người dùng gặp lỗi. Vấn đề là ở lần thực hiện đầu tiên file_counter biến luôn không được khai báo. Ai đó có thể giúp tôi ?

Câu trả lời:


0

Vấn đề là khối lệnh if - nó được đánh giá trong một đoạn. Giải quyết với hai thay đổi:

  1. thêm setlocal delayansion
  2. sử dụng! biến! bên trong các khối thay vì% biến% để họ đánh giá "nhanh chóng".

Bạn có thể thấy một lời giải thích tốt tại: câu trả lời siêu người dùng này bởi Joey

Mã của bạn sẽ giống như:

setlocal enabledelayedexpansion

:loop
@set /a counter=%counter%+1 
@if %counter% GTR 2 (
   @set /a file_counter=0
   for %%x in ("%Stckalz_Input%\%Directory_Stckalz_Job%\Results\*") do (set /a file_counter+=1)
   @echo Server is busy or not responding. !file_counter!
)
goto :loop

Tôi lấy mã của bạn và đặt nó vào .bat tập tin và chạy nó trên Windows 10 pro và !file_counter! không bao giờ tăng
Gabriel Fair
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.