Làm thế nào để bạn lặp lại qua từng tệp trong một thư mục với tệp .bat hoặc .cmd?
Để đơn giản, vui lòng cung cấp một câu trả lời chỉ lặp lại tên tệp hoặc đường dẫn tệp.
Làm thế nào để bạn lặp lại qua từng tệp trong một thư mục với tệp .bat hoặc .cmd?
Để đơn giản, vui lòng cung cấp một câu trả lời chỉ lặp lại tên tệp hoặc đường dẫn tệp.
Câu trả lời:
Sử dụng dòng lệnh:
for /f %f in ('dir /b c:\') do echo %f
Sử dụng tập tin hàng loạt:
for /f %%f in ('dir /b c:\') do echo %%f
Cập nhật : nếu thư mục chứa các tệp có khoảng trắng trong tên, bạn cần thay đổi dấu phân cách mà for /f
lệnh đang sử dụng. ví dụ, bạn có thể sử dụng ống char.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Cập nhật 2 : (nhanh chóng một năm rưỡi sau câu trả lời ban đầu :-)) Nếu tên thư mục có khoảng trắng trong tên, bạn có thể sử dụng usebackq
tùy chọn trên for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Và nếu bạn cần sử dụng chuyển hướng đầu ra hoặc đường ống lệnh, hãy sử dụng esc char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
cần thiết sau for
? Theo các tài liệu trợ giúp, /f
cờ mở và đọc từng tệp. Có cần thiết để lặp lại hoặc đổi tên tập tin?
/f
khi FOR
giới hạn nó vào tập tin. Tương tự, /d
giới hạn các thư mục (thư mục) và /r
hướng dẫn nó được đệ quy.
'dir /b "c:\program files"'
nó nên được`dir /b "c:\program files"`
Ngoài ra, sử dụng:
forfiles /s /m *.png /c "cmd /c echo @path"
Lệnh forfiles có sẵn trong Windows Vista trở lên.
Phương pháp dễ nhất:
Từ dòng lệnh, sử dụng:
for %f in (*.*) do echo %f
Từ tệp Batch (tăng gấp đôi dấu% phần trăm):
for %%f in (*.*) do echo %%f
Từ một tệp Batch với thư mục được chỉ định là tham số 1:
for %%f in (%1\*.*) do echo %%f
dir /B
đầu ra với for
.
Sử dụng
for /r path %%var in (*.*) do some_command %%var
với:
%%var was unexpected at this time.
Bạn có thể đưa ra một ví dụ chính xác? Tôi đã thử một loạt các biến thể củafor /r . %%var in (*.*) do echo %%var
Cách khác:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
là viết tắt của tên của tệp không có phần mở rộng, trong đó f
tên của biến được chỉ định trong for
phần. Tài liệu: docs.microsoft.com/en-us/preingly-versions/windows/it-pro/ mẹo