Powershellで大容量ファイルの中身をクリア(消す)する方法

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は使えたので、環境を選ばずに使えそうだ。

参考: https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/clear-content?view=powershell-7.3