やりたいこと
フォルダ内の全ファイルを再帰的に処理したいが、読み取り専用は避けて(読み取り専用以外を)処理したい。
/Aオプションを変更すれば、隠しファイル以外を処理することも出来そうです。
方法:FORコマンドを使用する
FOR /F "delims=" %i IN ('DIR /A:-D-R /B /S *.*') DO ECHO "%i"
-
FORコマンド-
/Fオプション:テキストファイルやコマンドのトークンを処理対象とする -
delims:トークンの区切り文字。"deloms="は区切り文字なしの意味で、半角スペースを含んだパスでも動作するように指定している
-
-
DIRコマンド-
/Aオプション:指定した属性のファイルのみ表示-
:D:ディレクトリ(:-Dはディレクトリではないの意味) -
:R:読取り専用ファイル(:-Rは読み取り専用ではないの意味)
-
-
/Bオプション:ファイル名のみ出力 -
/Sオプション:再帰的に処理
-
- 補足
- 本コマンドをバッチファイルとして実行する場合、変数名の
%を1つ増やして、%%iにする必要があります
使用例
@ECHO OFF
FOR /F "delims=" %%i IN ('DIR /A:-D-R /B /S *.py') DO Black "%%i"
PAUSE
PythonのフォーマッターBlackを呼び出しています。
バッチファイルとして実行するため、変数を%%iに変更しています。