バッチスクリプトを使用してディレクトリ内の各ファイルに何かをする方法
どのようにして、.batまたは.cmdファイルを持つディレクトリ内の各ファイルを反復処理しますか?
簡単にするために、単にファイル名またはファイルパスをエコーする答えを提供してください。
コマンドラインの使い方
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年半後の早い時期:-))ディレクトリ名自体に名前にスペースが含まれている場合は、usebackq
にfor
オプションを使用できます。
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
あるいは、
forfiles /s /m *.png /c "cmd /c echo @path"
Forfilesコマンドは、Windows Vista以降で使用できます。
最も簡単な方法:
コマンドラインから、次のように使用します。
for %f in (*.*) do echo %f
バッチファイルから(%パーセント記号を2倍にする):
for %%f in (*.*) do echo %%f
1番目のパラメータとしてフォルダを指定したバッチファイルから:
for %%f in (%1\*.*) do echo %%f
つかいます
for /r path %%var in (*.*) do some_command %%var
と:
- pathが開始パスです。
- %% varは何らかの識別子です。
- *。*ファイルマスクであるOR変数の内容.
- some_commandは、パスとvarをパラメータとして連結して実行するコマンドです。
別の方法:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"