Batch File, dir | findstr ภายในสำหรับลูป


1

ให้ฉันนำโดยยอมรับว่าฉันเป็น noob ที่สมบูรณ์ที่ไฟล์แบทช์ ... และภาษาการเขียนโปรแกรมโดยทั่วไป ฉันพยายามเขียนไฟล์แบตช์ที่อนุญาตให้ผู้ใช้ป้อนชื่อไฟล์บางส่วนและมันจะค้นหาไดเรกทอรีย่อยหลายสิบไดเรกทอรีค้นหาและเปิดไฟล์ pdf ทั้งหมดที่มีชื่อประกอบด้วยชื่อผู้ใช้ ฉันคาดหวังว่าจะพบไฟล์ PDF ที่แตกต่างกัน 2 ถึง 8 ไฟล์

ฉันสามารถใช้สิ่งต่อไปนี้เพื่อคืนค่าเส้นทางไฟล์

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

echo Searching folders

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

แต่เมื่อฉันพยายามที่จะใส่มันไว้ใน for for loop เพื่อที่ฉันจะได้ทำอะไรกับมันฉันก็พบปัญหา:

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

ดูเหมือนจะไม่ชอบท่อ ข้อเสนอแนะใด ๆ

ป.ล. ฉันต้องการให้มันเปิดไฟล์ pdf ไม่ใช่แค่เสียงก้อง แต่ฉันยังไม่ได้ใช้มันเลย ถ้าฉันไม่สามารถทำให้มันทำงานได้ในตอนนี้ก็ไม่มีเหตุผลที่ฉันจะทำให้สิ่งต่าง ๆ ซับซ้อนขึ้นได้


คุณได้รับข้อผิดพลาดอะไร
harrymc

มันยากที่จะบอกว่ารบกวนมันอย่างรวดเร็วและจากนั้นหน้าต่างก็ปิด แต่ฉันคิดว่ามันบอกว่า "| คาดไม่ถึงในเวลานี้"
Gumbi

คำตอบ:


2

เพื่อรันคำสั่งที่คุณต้องการ

  1. ใส่/fเพียงเพื่อและ
  2. แทรก"delims="เพื่อไม่ tokenize เอาท์พุท
    (โดยค่าเริ่มต้น"tokens=1 and delims= "มันจะถูกตัดหลังจากช่องว่างสีขาว)
  3. หลีกเลี่ยงสัญลักษณ์ไปป์^|เพื่อส่งต่อไปยัง cmd.exe สำรองซึ่งเรียกใช้งานเบื้องหลัง

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

หาก%Number%แสดงถึงตัวเลขแน่นอนไม่จำเป็นต้องใช้/iสวิตช์


1
ขอบคุณสำหรับความช่วยเหลือของคุณ! for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%Gทำงานอย่างไร!
Gumbi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.