ตัวแปรสำหรับการรับเส้นทางที่แน่นอนในสคริปต์ชุดของ windows


9

ฉันมีสคริปต์ต่อไปนี้เพื่อแสดงรายการไฟล์ทั้งหมดซ้ำจากไดเรกทอรีมี.phtmlส่วนขยาย

@echo off
setlocal
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @relpath"') do echo %%G >> listoffiles.txt
endlocal
exit

มันจะแสดงรายการเส้นทางที่สัมพันธ์กับไฟล์เท่านั้น สคริปต์ด้านบนทำงานจากตำแหน่งกลางดังนั้นฉันจึงไม่ได้รับเส้นทางแบบเต็มใน@relpathตัวแปร

นอกจากนี้ฉันยังได้รับการเสนอราคาในบรรทัดผลลัพธ์ซึ่งฉันต้องการลบ

ฉันต้องการเส้นทางที่แน่นอนไปยังไฟล์ที่มีการเปลี่ยนแปลงรหัสน้อยที่สุดถ้าตัวแปรทั่วโลกมีอยู่ซึ่งสามารถใช้ในรหัสของฉันได้ดีที่สุดสำหรับฉันเนื่องจากฉันไม่ได้เป็นผู้คัดลอกแบตช์ของ Windows

คำตอบ:


3

ฉันไม่ได้รับเส้นทางแบบเต็มใน@relpathตัวแปร

ฉันยังได้รับการเสนอราคาในบรรทัดผลลัพธ์ซึ่งฉันต้องการลบ

ไฟล์แบตช์ต่อไปนี้ทำสิ่งที่คุณต้องการ:

@echo off
setlocal enableDelayedExpansion
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @path"') do (
  set _name=%%G
  rem strip the quotes
  echo !_name:~1,-1! >> listoffiles.txt
  )
endlocal
exit

หมายเหตุ:

  • ใช้@path(พา ธ เต็มของไฟล์) แทน@relpath(พา ธ สัมพัทธ์ของไฟล์)
  • ใช้substringนิพจน์ตัวแปรเพื่อลบเครื่องหมายคำพูด ( :~1,-1ลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริงตัวแปร)
  • ใช้setlocal EnableDelayedExpansionเพื่อให้ตัวแปรถูกอัพเดตอย่างถูกต้องในforลูป

อ่านเพิ่มเติม

  • ดัชนี AZ ของบรรทัดคำสั่ง Windows CMD - การอ้างอิงที่ยอดเยี่ยมสำหรับทุกสิ่งที่เกี่ยวข้องกับ Windows cmd line
  • เปิดใช้งานการขยายเวลาล่าช้า - การขยายที่ล่าช้าจะทำให้ตัวแปรขยายตัวในเวลาดำเนินการแทนการแจงเวลา
  • สำหรับ / f - คำสั่งวนซ้ำกับผลลัพธ์ของคำสั่งอื่น
  • forfiles - เลือกไฟล์ (หรือชุดของไฟล์) และดำเนินการคำสั่งในแต่ละไฟล์ การประมวลผลแบบแบตช์
  • ตัวแปร - แยกส่วนของตัวแปร (สตริงย่อย)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.