Windowsの端末(Windowsサーバ)で、ログファイルを消さずに、中身だけを消して、クリアにしたかった。Linuxだと、catコマンドを使って、空データで上書きをやっている。Windowsだと、catコマンドがないので、できず。Powershellで、同じようになる方法を調べた。
Powershellを使って、ファイルの中身だけをクリアする(消す)には、Clear-Contentコマンドレットを使用する。Clear-Itemだとファイル自体を消してしまうが、Clear-Contentは、ファイルを残したまま、中身のみを削除する。
Clear-Content ファイル名
実行例)
PS C:\apache2\logs> dir
ディレクトリ: C:\apache2\logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/06/12 14:17 754742089 access.log
-a--- 2023/06/12 14:12 754741796 access.log.1
PS C:\apache2\logs> Clear-Content .\access.log
PS C:\apache2\logs> dir
ディレクトリ: C:\apache2\logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/06/12 14:19 0 access.log
-a--- 2023/06/12 14:12 754741796 access.log.1
PS C:\apache2\logs> dir
ディレクトリ: C:\apache2\logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/06/12 14:20 240 access.log
-a--- 2023/06/12 14:12 754741796 access.log.1
なお、Windows Server 2008 R2でもClear-Contentは使えたので、環境を選ばずに使えそうだ。