![FORFILES をバッチで使用して、1 週間以上経過した特定のサフィックス ファイルを削除します。](https://rvso.com/image/1646052/FORFILES%20%E3%82%92%E3%83%90%E3%83%83%E3%83%81%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%811%20%E9%80%B1%E9%96%93%E4%BB%A5%E4%B8%8A%E7%B5%8C%E9%81%8E%E3%81%97%E3%81%9F%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%B5%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
localhost_access_log
FORFILESをバッチで使用して、1週間以上前のtxtファイル(サブディレクトリではない)のみを削除したいのですが、%%t was unexpected at this time.
for %%t in (.txt) do forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m *%%t /d -10 /c "cmd /c del @PATH"
答え1
for /f useback^tokens^=* %i in (`2^>nul forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m "*.txt" /d -10 /c "cmd /c echo=@Path"`)do @echo\%~ni|findstr/bil localhost_access_log >nul && echo\ del/q /f "%~fi"
1.有効なマスクではありません:/m *%%t
の%%t
forfiles
が完全なパスである場合、それは前のループからの結果であり、100%修飾された要素ですが、たとえ追加されたとしても、によって使用されるマスクではありません。*
マスクとして扱われません。
2.置き換えることができます/m *%%t
に:
/m "*.txt"
3.ループFor
に置き換えます:For /F
for /f useback^tokens^=* %i in (`2^>nul forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m "*.txt" /d -10 /c "cmd /c echo=@Path"`)do ...
4.使用echo\FileName
削除したいファイルの名前と一致するかどうかを確認するには、リダイレクトを使用します|
。Findstr
、そして演算子&&
(return 0
)を実行するdel
名前が一致する場合:
@echo\%~ni|findstr/bil localhost_access_log >nul && echo\ del /q /f "%~i"
5.テストして確認し、問題がなければ、echo
ファイルを効果的に削除するために を削除します。
@echo\%~ni|findstr/bil localhost_access_log >nul && del /q /f "%~i"
観察:-For
ループを使用して変数を拡張できます。
%~i - expands %i removing any surrounding quotes (")
%~fi - expands %i to a fully qualified path file/dir name only
%~ni - expands %i to a file/dir name only
%~xi - expands %i to a file/dir extension only
%%~nxi => expands %%~i to a file/dir name and extension
Use the FOR variable syntax replacement: %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only
The modifiers can be combined to get compound results: %~pnI - expands %I to a path and file name only %~pnxI - expands %I to a path, file name and extension only
追加リソース:
Del /?
Echo /?
For /?
For /F /?
Forfiles /?
- リダイレクション
|
、、、、など。<
>
2>
- 条件付き実行 || && ...