289

.batまたは.cmdファイルを含むディレクトリ内の各ファイルをどのように反復しますか?

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

4

6 に答える 6

372

コマンドラインの使用法:

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

バッチファイルの使用法:

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

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

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

更新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
于 2008-10-07T22:51:57.213 に答える
128

または、次を使用します。

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

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

于 2012-10-18T23:22:13.993 に答える
37

使用する

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

と:

  • パスが開始パスです。
  • %%varは識別子です。
  • *.* being a filemask OR the contents of a variable.
  • some_command being the command to execute with the path and var concatenated as parameters.
于 2008-10-07T22:56:57.483 に答える
8

別の方法:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
于 2016-04-17T23:44:05.960 に答える
0

ディレクトリ内のすべてのファイルを隠し/システム/読み取り専用としてマークするマルウェアがいくつかありました。他の誰かがこの状況に陥った場合は、cd でディレクトリに移動して を実行してfor /f "delims=|" %f in ('forfiles') do attrib -s -h -r %fください。

于 2013-05-14T21:30:20.200 に答える