คุณวนซ้ำแต่ละไฟล์ในไดเรกทอรีด้วยไฟล์. bat หรือ. cmd อย่างไร
เพื่อความง่ายโปรดให้คำตอบที่สะท้อนถึงชื่อไฟล์หรือเส้นทางของไฟล์
คุณวนซ้ำแต่ละไฟล์ในไดเรกทอรีด้วยไฟล์. bat หรือ. cmd อย่างไร
เพื่อความง่ายโปรดให้คำตอบที่สะท้อนถึงชื่อไฟล์หรือเส้นทางของไฟล์
คำตอบ:
การใช้บรรทัดคำสั่ง:
for /f %f in ('dir /b c:\') do echo %f
การใช้ไฟล์แบทช์:
for /f %%f in ('dir /b c:\') do echo %%f
อัปเดต : หากไดเรกทอรีมีไฟล์ที่มีช่องว่างในชื่อคุณจะต้องเปลี่ยนตัวคั่นที่for /f
คำสั่งใช้ ตัวอย่างเช่นคุณสามารถใช้ pipe char
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
อัปเดต 2 : (รวดเร็วหนึ่งปีครึ่งหลังจากคำตอบเดิม :-)) หากชื่อไดเรกทอรีมีช่องว่างในชื่อคุณสามารถใช้usebackq
ตัวเลือกในfor
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
และหากคุณต้องการใช้การเปลี่ยนเส้นทางเอาต์พุตหรือการไพพ์คำสั่งให้ใช้ escape char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
ต้องหลังจากfor
? ตามเอกสารความช่วยเหลือการ/f
ตั้งค่าสถานะจะเปิดและอ่านแต่ละไฟล์ จำเป็นต้องใช้เพื่อสะท้อนหรือเปลี่ยนชื่อไฟล์หรือไม่?
/f
หลังจากที่FOR
จำกัด ไปยังไฟล์ ในทำนองเดียวกัน/d
จำกัด ไว้ที่ไดเรกทอรี (โฟลเดอร์) และ/r
สั่งให้เรียกซ้ำ
'dir /b "c:\program files"'
เป็น`dir /b "c:\program files"`
หรือใช้:
forfiles /s /m *.png /c "cmd /c echo @path"
คำสั่ง forfiles พร้อมใช้งานใน Windows Vista ขึ้นไป
วิธีที่ง่ายที่สุด:
จาก Command Line ให้ใช้:
for %f in (*.*) do echo %f
จากไฟล์แบทช์ (เพิ่ม% เครื่องหมายเปอร์เซ็นต์ขึ้นสองเท่า):
for %%f in (*.*) do echo %%f
จาก Batch File พร้อมโฟลเดอร์ที่ระบุเป็นพารามิเตอร์ที่ 1:
for %%f in (%1\*.*) do echo %%f
dir /B
for
ใช้
for /r path %%var in (*.*) do some_command %%var
ด้วย:
%%var was unexpected at this time.
คุณสามารถยกตัวอย่างที่แน่นอนได้หรือไม่? ฉันลองชุดรูปแบบมากมายของfor /r . %%var in (*.*) do echo %%var
อีกวิธีหนึ่ง:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
ย่อมาจากชื่อของไฟล์ที่ไม่มีนามสกุลโดยที่f
เป็นชื่อของตัวแปรที่ระบุในfor
ส่วนหนึ่ง เอกสาร: docs.microsoft.com/en-us/previous-versions/windows/it-pro/ ......
ฉันมีมัลแวร์บางตัวที่ทำเครื่องหมายไฟล์ทั้งหมดในไดเรกทอรีว่าซ่อนอยู่ / ระบบ / อ่านอย่างเดียว ถ้าคนอื่นพบว่าตัวเองอยู่ในสถานการณ์เช่นนี้ cd for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
ลงในไดเรกทอรีและเรียกใช้