質問: 以前、こちらで forfilesでのPDF圧縮方法を教えて頂きました ``` forfiles /P C:\pdf /S /M *.pdf /D -90 /C "cmd /c gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=@path_2.pdf @path" ``` 90日以前のpdfファイルを圧縮するバッチコマンドです 上記、うまくいったのですが実際に実行しようとするとファイル数が多くて 躊躇してます。 そこで90日以前の指定から30日前から60日の間のpdf のように期間指定出来ないかと思ってます 方法をご存知の方、いらっしゃいましたら教えていただけないでしょうか? forfilesでの期間指定方法を
回答: 質問にストレートに答えると、上限下限を指定しての期間指定は出来ません。 `forfiles /?`を参照してください。また、実際に、`/D`を2回指定するとエラーになります。やってみましたか? 30日以前と90日以前のファイルリストを作って、その差分に対して、処理を実行するというバッチスクリプトを書くことになるかと思います。 バッチファイルの例: ・30日以前89日未満のファイルのみ対象とする。 ・90日以前のリスト、30日以前のリストを作り、30日以前のリストにはあるが、90日以前のリストにないものを調べる。 ``` forfiles /P C:\pdf /S /M *.pdf /D -90 /c "cmd /c echo @path"> OLD90 forfiles /P C:\pdf /S /M *.pdf /D -30 /c "cmd /c echo @path"> OLD30 for /f "delims=" %%A in (OLD30) do ( findstr %%A OLD90 >NUL if errorlevel 1 gswin64c ~~~ %%A ) del OLD30 OLD90 ```