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


265

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

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

回答:


348

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

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

バッチファイルの使用:

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

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

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

3
少なくとも一部のコマンドでは、ファイル変数を二重引用符で囲む必要があります。
Jirka

1
なぜ/f必要forですか?ヘルプドキュメントによると、/fフラグは各ファイルを開いて読み取ります。ファイルをエコーし​​たり、ファイル名を変更するために必要ですか?
Snekse

17
/f後は、FORファイルにそれを制限します。同様に、/dディレクトリ(フォルダ)に制限し、/r再帰的にするように指示します。

3
+1これは生き続ける答えであり、継続的に参加しています。どうもありがとう。
Sabuncu 14

4
逆引用符を使用する必要があることに気づきました...代わりに使用'dir /b "c:\program files"'する必要があります`dir /b "c:\program files"`
endavid

101

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

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

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


1
2番目のcmdシェルでスペースを含むパスを使用することは困難でした。最後に、%PATH%env varを調整してジョブを完了させました。しかし、ありがとう。役立つ
twobob 2017年

70

最も簡単な方法:

コマンドラインから、次を使用します:

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

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

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

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

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

8
最も簡単なだけでなく、でdir /B出力を評価するよりもはるかにエレガントforです。
syneticon-dj 2014

5
%fの前に/ rを追加してサブディレクトリを再帰します
PRMan

35

使用する

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

と:

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

2
エラーが表示されます:%%var was unexpected at this time.正確な例を挙げられますか?for /r . %%var in (*.*) do echo %%var
さまざま

3
奇妙な理由で、変数名は1文字に制限されています。
ollb

2
異なる結果に異なるスマイリーを使用できますか?
シルバークエッティエ2014


-1

ディレクトリ内のすべてのファイルをhidden / system / readonlyとマークするマルウェアがありました。他の誰かがこの状況で自分自身を見つけた場合は、ディレクトリにcdして実行しfor /f "delims=|" %f in ('forfiles') do attrib -s -h -r %fます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.