4か月前のフォルダをサブフォルダも含め消すバッチ
FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddMonths"("-4")".ToString"("'yyyyMM'")"`) DO SET monthago=%%a rmdir /s C:\path\to\%monthago
/q クワイエットモードを使うと事前に設定した変数が展開されない?
また、変数に「数字」は使えない?
FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddMonths"("-4")".ToString"("'yyyyMM'")"`) DO SET monthago=%%a SET 4monthsagp=202311 となってもバッチないでは変数で置き換わらずに4が取れてmonthsgoとなってしまう。定義されていないので、当然置き換わらない。 ちなみにバッチではなくコマンドラインで実行した場合はちゃんと置き換わる
/qが使えない場合に自動でYを返すにはコマンドの頭に「echo Y|」を付ける
echo Y|rmdir /s C:\path\to\%monthago