Windows/全ファイル1つずつに対してコマンドを実行するときのバッチファイル
Windowsでファイルやフォルダそれぞれに対してコマンドをそれぞれ実行したい時のバッチファイルの書き方。
forを使います。
for /f "usebackq delims==" %%i IN (`dir 【対象ファイルorフォルダ名】 /b`) DO 【コマンド】 %%i
ポイント1:
【対象ファイルorフォルダ名】で、指定したいフォルダへのパスを指定します。
(動作は dir コマンドに準じます)
例1) Windowsフォルダ内の 拡張子 .log ファイル
C:\Windows\*.log
例2) D:\Profiles フォルダ内の全サブフォルダ
D:\Profiles\
例3) 例2でフォルダ内にファイルも含まれてしまうのを防ぐ
D:\Profiles\ /ad
(/ad はdirコマンドに対するオプションで、ディレクトリのみを対象とします。)
ポイント2:
%%i には取得したファイル・フォルダ名が入ります。
ただし、フルパスではなく相対パスが入りますので、カレントディレクトリ以外に対して実行する場合は、きちんとパスを記述してください。
下記に実例を書きます。
例4 ) C:\Windows フォルダの拡張子 .log のファイルをひとつずつ削除させる場合(実用性ゼロ)
for /f "usebackq delims==" %%i IN (`dir "C:\Windows\*.log" /b`) DO DEL "C:\Windows\%%i"
例5 ) D:\Profiles フォルダ内の全フォルダに、administratorsグループへのフルアクセス権限を付与する@cacls版
for /f "usebackq delims==" %%i IN (`dir D:\profiles /ad/b`) DO cacls D:\profiles\%%i /t /e /c /g administrators:F
このページのURL: