やりたいこと
フォルダ内の全ファイルを再帰的に処理したいが、読み取り専用は避けて(読み取り専用以外を)処理したい。
/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
に変更しています。