web-dev-qa-db-ja.com

バッチスクリプトを使用してディレクトリ内の各ファイルに何かをする方法

どのようにして、.batまたは.cmdファイルを持つディレクトリ内の各ファイルを反復処理しますか?

簡単にするために、単にファイル名またはファイルパスをエコーする答えを提供してください。

246
Brian R. Bondy

コマンドラインの使い方

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

バッチファイルの使用法

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

更新:ディレクトリに名前にスペースを含むファイルが含まれている場合は、for /fコマンドが使用している区切り文字を変更する必要があります。たとえば、パイプcharを使用できます。

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

pdate 2:(最初の答えから1年半後の早い時期:-))ディレクトリ名自体に名前にスペースが含まれている場合は、usebackqforオプションを使用できます。

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

また、出力のリダイレクトやコマンドパイピングを使用する必要がある場合は、エスケープ文字(^)を使用してください。

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i Microsoft`) do echo %%f
325
Franci Penov

あるいは、

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

Forfilesコマンドは、Windows Vista以降で使用できます。

94
Paul Houx

最も簡単な方法:

コマンドラインから、次のように使用します。

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

バッチファイルから(%パーセント記号を2倍にする):

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

1番目のパラメータとしてフォルダを指定したバッチファイルから:

for %%f in (%1\*.*) do echo %%f
57
Gordon Bell

つかいます

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

と:

  • pathが開始パスです。
  • %% varは何らかの識別子です。
  • *。*ファイルマスクであるOR変数の内容.
  • some_commandは、パスとvarをパラメータとして連結して実行するコマンドです。
33
mstrobl

別の方法:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
6
thistleknot