Я нахожусь в процессе создания командного файла, чтобы полностью заполнить оставшееся свободное пространство на USB-накопителях, SD-картах, картах Micro SD и т. Д. ... реальными данными, чтобы предотвратить восстановление ранее удаленных файлов наdevice.
Справочная информация. У меня была простая SD-карта PNY 16 ГБ, в которую были загружены фотографии, сделанные охотничьей камерой.Я удалил фотографии с помощью обычного метода удаления Windows 8.Затем я использовал функцию форматирования Windows 8 (сняв флажок с опции «Быстрое форматирование»), которая предположительно надежно стирает данные.Затем я запустил программу DiskDigger.exe на выбранном диске, и она получила каждую фотографию.Затем я запустил Privazer.exe и выполнил перезапись DoD в 3 прохода на SD-карте.Тем не менее, DiskDigger восстановил каждую последнюю фотографию.После нескольких попыток копирования и вставки данных на карту, а затем запуска программ безопасного стирания для удаления данных фотографии все еще можно было восстановить.Единственный способ получить фотографии без возможности восстановления - это перезаписать каждый последний байт на SD-карте одним 128-байтовым текстовым файлом, многократно скопированным до полного заполнения.Когда я переформатировал диск, фотографии больше не могли быть восстановлены.
Извините, что исчерпывающе, но хотел, чтобы все знали точную проблему.
Что я хочу:
.bat файл перезаписывает каждый байт свободногосвободное место на носителе
Данные для перезаписи будут получены из набора файлов .txt, содержащихся в том же DIR
После выполнения я выполняюне хочу, чтобы .bat-файл вообще запрашивал у пользователя
Я не хочу запускать .bat-файл до такой степени, что я получаю ошибки переполнения диска
Я хочу, чтобы он обрабатывал до 64 ГБ съемных дисков
Что у меня есть:
F: так случилось, что это моя особенностьБуква USB-накопителя
Нет сомнений в том, что это эффективный процесс в миллионах миль, но я решил использовать подход «просто что-то для работы».Он работает, пока я не получу «Достигнут рекурсивный предел SETLOCAL» (однако он заполнил диск)
Сначала я сгенерировал файлы .txt каждого стандартного размера, используя файл .bat, и загрузил их втот же каталог с моим перезаписать файл .bat.Кажется, я не могу получить файл размером более 2 ГБ для копирования с помощью пакета.Из-за этого я создал 8 текстовых файлов по 2 ГБ с разными именами, чтобы охватить как минимум 16 ГБ SD-карту.Другая проблема, с которой я столкнулся, - это приглашение пользователя подтвердить перезапись файлов с одинаковыми именами.Я не понял, как преодолеть ту же самую подсказку с именем файла.
Мне пришлось поместить все SETLOCAL просто для того, чтобы операторы For точно читали оставшееся свободное пространство.Без них переменная свободного пространства остается одинаковой для каждой итерации.
Я знаю, что есть гораздо лучшие методы, но, простите, я бы хотел помочь.Может кто-нибудь пожалуйста
Покажите мне, как правильно зациклить этот
Если возможно, покажите мне, как заставить дубликаты имен файлов копировать без запросаПользователь.Это избавит меня от необходимости создавать 32 файла TGB с разными именами, чтобы перезаписать диск объемом 64 ГБ.
Я знаю, что это элементарно, но да, я хочу его в пакетном режиме.
Этот файл .bat должен считывать свободное место на диске, копировать самый большой файл .txt, который уместится в это пространство, перечитывать свободное пространство, копировать самый большой файл .txtи т. д. до тех пор, пока он полностью не заполнит диск до 128 байт без ввода пользователя и ошибок.
@echo off
Set "Blank= "
Set "GB2= 2097152000"
Set "GB1= 1048576000"
Set "MB512= 524288000"
Set "MB256= 262144000"
Set "MB128= 131072000"
Set "MB64= 65536000"
Set "MB32= 32768000"
Set "MB16= 16384000"
Set "MB8= 8192000"
Set "MB4= 4096000"
Set "MB2= 2048000"
Set "MB1= 1024000"
Set "KB512= 512000"
Set "KB256= 256000"
Set "KB128= 128000"
Set "KB64= 64000"
Set "KB32= 32000"
Set "KB16= 16000"
Set "KB8= 8000"
Set "KB4= 4000"
Set "KB2= 2000"
Set "KB1= 1000"
Set "B512= 512"
Set "B256= 256"
Set "B128= 128"
Set "TB_10= 10995116277760"
for /F "tokens=2" %%i in ('date /t') do set mydate=%%i
set mytime=%time%
echo Current time is %mydate%:%mytime%
:Loop
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (1).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (2).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (3).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (4).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (5).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (6).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (7).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB2%" ( xcopy "c:\Batch Files\File Builder\Gigabytes2 (8).txt" F:
Echo File Copied )
setlocal
for /f "tokens=2" %%A in ('wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "F:"') Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"
Echo FreeSpace="%FreeSpace%"
If "%FreeSpace%" gtr "%GB1%" ( xcopy "c:\Batch Files\File Builder\Gigabytes1.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB512%" ( xcopy "c:\Batch Files\File Builder\Megabytes512.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB256%" ( xcopy "c:\Batch Files\File Builder\Megabytes256.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB128%" ( xcopy "c:\Batch Files\File Builder\Megabytes128.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB64%" ( xcopy "c:\Batch Files\File Builder\Megabytes64.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB32%" ( xcopy "c:\Batch Files\File Builder\Megabytes32.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB16%" ( xcopy "c:\Batch Files\File Builder\Megabytes16.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB8%" ( xcopy "c:\Batch Files\File Builder\Megabytes8.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB4%" ( xcopy "c:\Batch Files\File Builder\Megabytes4.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB2%" ( xcopy "c:\Batch Files\File Builder\Megabytes2.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%MB1%" ( xcopy "c:\Batch Files\File Builder\Megabytes1.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB512%" ( xcopy "c:\Batch Files\File Builder\Kilobytes512.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB256%" ( xcopy "c:\Batch Files\File Builder\Kilobytes256.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB128%" ( xcopy "c:\Batch Files\File Builder\Kilobytes128.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB64%" ( xcopy "c:\Batch Files\File Builder\Kilobytes64.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB32%" ( xcopy "c:\Batch Files\File Builder\Kilobytes32.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB16%" ( xcopy "c:\Batch Files\File Builder\Kilobytes16.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB8%" ( xcopy "c:\Batch Files\File Builder\Kilobytes8.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB4%" ( xcopy "c:\Batch Files\File Builder\Kilobytes4.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB2%" ( xcopy "c:\Batch Files\File Builder\Kilobytes2.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%KB1%" ( xcopy "c:\Batch Files\File Builder\Kilobytes1.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%B512%" ( xcopy "c:\Batch Files\File Builder\Bytes512.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%B256%" ( xcopy "c:\Batch Files\File Builder\Bytes256.txt" F:
Echo File Copied
GOTO :Loop )
If "%FreeSpace%" gtr "%B128%" ( xcopy "c:\Batch Files\File Builder\Bytes128.txt" F:
Echo File Copied )
for /f "tokens=2" %%j in ('date /t') do set enddate=%%j
set endtime=%time%
echo Beginning time was %mydate%:%mytime%
echo Ending time was %enddate%:%endtime%
pause
Файл запускается