1. Shred для Windows (копия)
2. Устранил финальный недостаток SHRED под Windows в BAT-файле (копия)
3. Random Renamer (копия)
В [2] описал недостаток утилиты shred
, а именно: затирая файл она никак не меняет его имени, потому, если вы shred‘ом удалили файл, например, с именем Путин бомба взрыв чеченцы.doc
, содержимое файла затрется, а название останется.
Впрочем, там же описал недостаток и получения случайного имени файла стандартными средствами BAT/CMD: Имя временного файла весьма характерное, при анализе диска будет видно, что кто-то скриптом пользовался. Как сделать нормальные случайные имена файлов в CMD (вида lfcx16.tmp
, например) без внешних утилит, я пока не понял.
Впрочем, да, без PowerShell или JS/VBS стандартными средствами CMD/BAT получить нормальное случайное имя файла сложно, так что написал простенькую утилиту Random Renamer [3], которую, впрочем, писал немного для другого, но в [3] обещал пример, как ее можно использовать со shred
в BAT-файле.
1. Отключаем режим вывода команд:
@echo off
2. Проверяем, чтобы в первом параметре BAT-файла были указаны маска или имя файла, иначе насерет в консоль ошибками и будет некрасиво:
IF "%1" EQU "" goto paramerr
3. В конце BAT-файла дописываем метку :paramerr
и вывод сообщения об ошибке:
:paramerr
echo First parameter must be file name or file mask!
echo e.g. rrshred.bat *.txt
echo e.g. rrshred.bat text.txt
4. Генерируем имя для списка файлов, которые будут переименованы и обработаны shred
:
set RLST=%TEMP%\%RANDOM%.%RANDOM%
5. Переименовываем файлы в текущем каталоге Random Renamer’ом и отправляем вывод RR в список файлов:
rr -m %1 -v >%RLST%
где:
-m %1
— задание маски переименуемых файлов
-v
— включить вывод процесса переименования
Вывод производится на STDOUT
, потому перенаправляем его во временный файл (>%RLST%
).
Пример содержимого файла (X:\Temp\15158.18655
):
Rename files...
Z:\Test1.txt --> 1.txt --> tuz3v4t3.ovw OK.
Z:\Test2.txt --> 2.txt --> npk5b7jn.q12 OK.
Z:\Test3.txt --> 3.txt --> sqtn63cl.dwa OK.
Z:\Test4.txt --> 4.txt --> m371e448.q12 OK.
Found files: 4
Renamed files: 4
Error files: 0
6. В цикле вытаскиваем имена переименованных файлов из файла-списка:
FOR /F "tokens=5,5 delims= " %%i in (%RLST%) do ( [внутри цикла] )
Справка по команде FOR BAT-файла (копия в PDF)
Внутри цикла:
1. Вызываем shred
для каждого файла из списка:
shred -n 3 -z %%i
где:
-n 3
— затереть случайными данными файл в 3 прохода
-z
— сделать дополнительный проход, затерев содержимое файла нолями (символом с кодом 0x00h
)
2. Удаляем файл:
del %%i
После цикла затираем и удаляем сам файл со списком файлов, имя которого в %RLST%
:
shred -n 3 -z %RLST%
del %RLST%
exit /b
Команда exit /b
завершает работу BAT-файла, параметр /b
указывает, чтобы по выходу из BAT-файла, командный процессор не был бы закрыт.
Ниже в BAT-файле будет идти метка :paramerr
@echo off IF "%1" EQU "" goto paramerr SET RLST=%TEMP%\%RANDOM%.%RANDOM% rr -m %1 -v >%RLST% FOR /F "tokens=5,5 delims= " %%i in (%RLST%) do ( shred -n 3 -z %%i del %%i ) ::remove list of files shred -n 3 -z %RLST% del %RLST% exit /b :paramerr echo First parameter must be file name or file mask! echo e.g. rrshred.bat *.txt echo e.g. rrshred.bat text.txt
1. Скачать rr + shred + rrshred.bat с GitHub (ZIP-архив)
2. Распаковать архив в один каталог, находящийся в переменной окружения
%PATH%
, например, C:\Windows
.3. Пример вызова:
rrshred.bat *.txt
— затрет и удалит файлы *.txt
в текущем каталоге.