Batch File, dir | findstr trong vòng lặp for


0

Hãy để tôi mở đầu bằng cách thừa nhận rằng tôi là một người mới hoàn toàn ở các tệp bó ... và ngôn ngữ lập trình nói chung. Tôi đang cố gắng viết một tệp bó cho phép người dùng nhập một phần tên tệp và nó sẽ tìm kiếm hàng tá thư mục con, tìm và mở tất cả các tệp pdf có tên chứa đầu vào của người dùng. Tôi hy vọng rằng nó sẽ tìm thấy từ 2 đến 8 tệp pdf khác nhau.

Tôi có thể sử dụng cách sau để trả về đường dẫn tệp,

set /p Number="Enter the Job-Shaft Number "

echo Searching folders

dir /b /s "*.pdf" | findstr /i "%Number%"

Nhưng khi tôi cố gắng bọc nó trong một vòng lặp for để tôi thực sự có thể làm gì đó với nó, tôi gặp vấn đề:

for %%G in ('dir /b /s "*.pdf" | findstr /i "%Number%"') do echo %%G

Nó dường như không thích đường ống. Bất kỳ đề xuất?

P.S. Tôi muốn nó thực sự mở ra các tệp pdf không chỉ là tiếng vang, nhưng tôi chưa thể đi xa đến thế. Nếu tôi không thể làm cho nó hoạt động ngay bây giờ, tôi sẽ không có ý nghĩa gì khiến mọi thứ trở nên phức tạp hơn.


Bạn đang gặp phải lỗi gì?
harrymc

Thật khó để nói, harrymc, nó nhấp nháy rất nhanh, và rồi cửa sổ đóng lại. nhưng tôi nghĩ nó nói "| thật bất ngờ vào lúc này"
Gumbi

Câu trả lời:


1

Để chạy lệnh bạn cần phải

  1. chèn /f chỉ đứng sau và cũng
  2. chèn "delims=" đến không phải token hóa đầu ra
    (với mặc định "tokens=1 and delims= " nó sẽ bị cắt sau khoảng trắng)
  3. thoát khỏi biểu tượng đường ống ^| để chuyển nó đến cmd.exe thứ cấp được thực thi phía sau hậu trường.

for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G

Nếu %Number% thực sự đại diện cho một số không cần phải sử dụng /i công tắc điện


1
Cảm ơn bạn đã giúp đỡ! for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G là những gì đã làm việc!
Gumbi
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.