バッチスクリプトを使用してディレクトリ内の各ファイルに何かを行う方法
-
05-07-2019 - |
質問
.batまたは.cmdファイルを使用して、ディレクトリ内の各ファイルをどのように反復しますか?
簡単にするために、ファイル名またはファイルパスのみをエコーする回答を提供してください。
解決
コマンドラインの使用法:
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
Update 2 :(元の回答の1年半後:-))ディレクトリ名自体に名前にスペースが含まれている場合は、 usebackq
for
のcode>オプション:
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
with:
- パスは開始パスです。
- %% varは何らかの識別子です。
- *。*はファイルマスクまたは変数の内容です。
- some_commandは、パスとvarをパラメーターとして連結して実行するコマンドです。
別の方法:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
ディレクトリ内のすべてのファイルをhidden / system / readonlyとしてマークするマルウェアがいくつかありました。この状況で他の誰かが自分自身を見つけたら、ディレクトリにcdして/ f" delims = |"のを実行します。 % 'in(' forfiles ')do attrib -s -h -r%f
。
所属していません StackOverflow