.Bat veya .cmd uzantılı bir dizindeki her dosyayı nasıl yineleyebilirsiniz?
Basit olması için lütfen sadece dosya adını veya dosya yolunu yansıtan bir cevap verin.
.Bat veya .cmd uzantılı bir dizindeki her dosyayı nasıl yineleyebilirsiniz?
Basit olması için lütfen sadece dosya adını veya dosya yolunu yansıtan bir cevap verin.
Yanıtlar:
Komut satırı kullanımı:
for /f %f in ('dir /b c:\') do echo %f
Toplu dosya kullanımı:
for /f %%f in ('dir /b c:\') do echo %%f
Güncelleme : Dizin adlarda boşluk içeren dosyalar içeriyorsa, for /f
komutun kullandığı ayırıcıyı değiştirmeniz gerekir . örneğin, boru karakterini kullanabilirsiniz.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Güncelleme 2 : (orijinal cevaptan bir buçuk yıl sonra :-)) Dizin adının kendisinin adında bir boşluk varsa, aşağıdaki usebackq
seçeneği kullanabilirsiniz for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Çıktı yeniden yönlendirmesi veya komut borulaması kullanmanız gerekiyorsa escape char ( ^
) yöntemini kullanın :
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
ihtiyaç duyulur for
? Yardım belgelerine göre, /f
bayrak açılır ve her dosyayı okur. Dosyaları yankılamak veya yeniden adlandırmak için gerekli mi?
/f
Sonra FOR
dosyalarına bunu kısıtlar. Benzer şekilde, /d
dizinlerle (klasörler) kısıtlanır ve /r
özyinelemeli olması için talimat verir.
'dir /b "c:\program files"'
olmalı`dir /b "c:\program files"`
Alternatif olarak şunları kullanın:
forfiles /s /m *.png /c "cmd /c echo @path"
Forfiles komutu Windows Vista ve sonraki sürümlerde kullanılabilir.
En kolay yöntem:
Komut Satırından şunu kullanın:
for %f in (*.*) do echo %f
Bir Toplu Dosyadan (yüzde işaretlerini ikiye katlayın):
for %%f in (*.*) do echo %%f
Klasör 1. parametre olarak belirtilen bir Toplu İş Dosyasından:
for %%f in (%1\*.*) do echo %%f
dir /B
çıktı değerlendirmesine kıyasla önemli ölçüde daha zarif for
.
kullanım
for /r path %%var in (*.*) do some_command %%var
ile:
%%var was unexpected at this time.
Kesin bir örnek verebilir misiniz? Bir sürü varyasyon denedimfor /r . %%var in (*.*) do echo %%var
Diğer yol:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
, uzantısız dosyanın adını gösterir; burada f
, for
kısmen belirtilen değişkenin adıdır . Dokümanlar: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…
Bir dizindeki tüm dosyaları gizli / sistem / salt okunur olarak işaretleyen bazı kötü amaçlı yazılımlarım vardı. Bu durumda başka biri kendini bulursa, dizine cd ve çalıştırın for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.