2008-10-07 21 views

Odpowiedz

302

poleceń Wykorzystanie linia:

for /f %f in (`dir /b c:\`) do echo %f 

wykorzystanie pliku wsadowego:

for /f %%f in (`dir /b c:\`) do echo %%f 

Aktualizacja: jeśli katalog zawiera pliki z przestrzeni nazw, trzeba zmienić separator komendy for /f jest używane. na przykład możesz użyć char char.

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f 

Aktualizacja 2 (szybkie rok i pół roku po pierwotnej odpowiedzi :-)) Jeśli nazwa katalogu sama ma spacji w nazwie, można skorzystać z opcji usebackq na for:

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f 

A jeśli trzeba użyć przekierowania wyjścia lub sztywne polecenia, należy użyć char escape (^):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f 
+0

Próbowałem wyliczyć pliki w bieżącym katalogu za pomocą tego polecenia [for/f %% f in ('dir/b.') do echo %% f] .. Niestety pliki ze spacjami miały swoją nazwę wydrukowaną na ich pierwszym miejscu ..? Dzięki –

+1

Przynajmniej dla niektórych poleceń, zmienna pliku powinna być ujęta w podwójny cudzysłów. – Jirka

+0

Jest to również przydatne: Jak zrobić wiele rzeczy do każdego pliku w katalogu ze skryptem wsadowym http://stackoverflow.com/questions/2304867/how-to-do-multiple-things-to-each-file-in -a-katalog-z-skryptem wsadowym? lq = 1 – Snekse

29

Zastosowanie

for /r path %%var in (*.*) do some_command %%var 

z:

  • ścieżka jest ścieżką wyjścia.
  • %% var jest jakimś identyfikatorem.
  • *. * Będąc maską pliku LUB zawartością zmiennej.
  • some_command to polecenie do wykonania ze ścieżką i var połączonymi jako parametry.
+1

Pojawia się błąd: '%% var był nieoczekiwany w tym czasie. Czy możesz podać dokładny przykład? Próbowałem kilku odmian 'for/r. %% var in (*. *) do echo %% var' – hippietrail

+3

Z jakiegoś dziwnego powodu nazwa zmiennej jest ograniczona do jednego znaku. – ollb

+1

Czy możemy używać różnych emotikonów dla różnych wyników? –

75

Alternatywnie, zastosowanie:

forfiles /s /m *.png /c "cmd /c echo @path" 

Komenda forfiles jest dostępny w systemach Windows Vista i Windows 7.

+0

było trudno używać ścieżek ze spacjami w powłoce 2 cmd. Na koniec ustawiłem% PATH% env var, aby wykonać zadanie. Ale dzięki. pomocny – twobob

-2

miałem jakieś złośliwe oprogramowanie, które zaznaczone wszystkie pliki w katalogu jako ukryte/system/tylko do odczytu . Jeśli ktoś znajdzie się w takiej sytuacji, wejdź do katalogu i uruchom for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f.

38

Najprostsza metoda:

z linii poleceń, należy:

for %f in (*.*) do echo %f 

z partii File (podwoić znaki% procent):

for %%f in (*.*) do echo %%f 

z pliku wsadowego z folderu określony jako pierwszy parametr:

for %%f in (%1\*.*) do echo %%f 
+5

nie tylko najłatwiejszy, ale także znacznie bardziej elegancki w porównaniu do oceny wyjścia 'dir/B' z' for'. –

+3

Dodaj a/r przed% f, aby recurse podkatalogów – PRMan

1

dla% f w (* .mp4) czy wywołaj ffmpeg -i "% ~ f" -kodowanie w trybie vcodec -kodecy "% ~ nf.avi"