Windows環境でフォルダーやファイルを削除した場合、通常は一旦ごみ箱に移動され、ごみ箱を空にした時点でそれらのフォルダーやファイルは消去され、通常の操作では復元できなくなります。
ですが、専用のデータ復元ツールを利用すれば、ごみ箱から消去されて間もないファイルは意外と簡単に復元できてしまいます。
一般的なファイルであれば、たとえ復元されてもそれほど困りはしませんが、企業秘密などが記録されたファイルを消去するときは、万が一にも復元されないよう万全を期したいところです。
そこでここでは、Microsoftが提供するSysinternalツールの一つ「SDelete」を使って、フォルダーやファイルを復元できないよう完全消去する方法を紹介します。
目次
SDeleteとは
SDeleteは、Microsoftが提供している「Windows Sysinternals」に含まれるツールで、フォルダーやファイルを完全消去したり、ドライブの空き領域を完全消去できるコマンドラインツールです。
SDeleteツールは、以下のWebページからダウンロードできます。
SDelete - Sysinternals | Microsoft Learn
ダウンロードしたZIPファイルを展開して、任意のフォルダーに配置したら準備完了です。
SDeleteツールの使い方
SDeleteを使ってフォルダーやファイルを完全消去する手順は、以下のとおりです。
SDeleteツールはコマンドラインツールのため、フォルダーやファイルを完全消去するときは、コマンドプロンプトやPowerShellから利用します。
32bit版のWindowsでは「sdelete.exe」、64bit版のWindowsでは「sdelete64.exe」を利用します。
たとえば「D:¥test\file1.txt」を完全消去するときは、以下のように実行します。
> sdelete64.exe -nobanner "D:\test\file1.txt"
「D:\test」フォルダーとサブフォルダーを含めて完全消去するときは、以下のように実行します。
> sdelete64.exe -nobanner -s "D:\test"
複数のフォルダーやファイルを一括で完全消去したいときは、以下のようにバッチファイル化するのがおすすめです。
下のバッチファイルでは、ドラッグ&ドロップしたフォルダーやファイルを一括で完全消去できます。
@echo off
setlocal enabledelayedexpansion
set d=%~dp0
set logfile=%d%%~n0.log
set sdelete-path=D:\sdelete\sdelete64.exe
echo %date:/=%%time::=% >>%logfile%
for %%A in (%*) do (
set attr=%%~aA
if "!attr:~0,1!"=="d" (%sdelete-path% /s "%%A" >>%logfile%)
if "!attr:~0,1!"=="-" (%sdelete-path% "%%A" >>%logfile%)
)
endlocal
なお、ファイル名に日本語が含まれるいると、ファイル単体での処理が正常に実行できないため、そのようなファイルは、フォルダーにまとめた上でバッチファイルにドラッグ&ドロップすれば正常に処理できます。
おまけ
ちなみに、SDeleteツールでは既存のデータに影響を与えることなく、ドライブの空き領域だけを完全消去することもできます。
たとえば、Dドライブの空き領域を完全消去するときは、以下のように実行します。
> sdelete64.exe -nobanner -z D:
なお、ドライブの空き領域の完全消去には、数時間またはそれ以上かかることがあるのでご留意ください。
あとがき
フォルダーやファイルを完全消去する場合、サードパーティーのGUIツールを利用するのが一般的ですが、コマンドラインツールで対応したい場合はSDeleteツールがおすすめです。Microsoft製という安心感もありますし。