И так, в данной статье я решил рассмотреть утилиту ERASE, которая позволяет удалить файл через командную строку. Дело в том, что в жизни бывают такие случаи, когда перед тобой старенький ноут с неработающим CD-ROMом, полетела винда, которой 3 года, а рядом стоит грустный хозяин, который готов заплатить 20 баксов, лишь бы его доклад для шефа спасти (а шеф то злобный, а доклад то один).
Доклад то вернуть не проблема, но ведь и перед человеком надо похвастаться! И что может быть привлекательней, чем парень, щелкающий по клавишам с умным видом перед черным экраном. Но прежде чем рассматривать утилиту ERASE (можете по теме почитать про утилиту DEL), которая позволяет удалить программу через командную строку или любой другой документ, почитаем немного лирики…
Пожалуй, редкого юзера посетит мысль удалить файл из командной строки, вместо того, что бы просто нажать клавишу DELETE. Теперь, когда компьютерные игры занимают по 10-15 гектаров, а создать собственный сайт не сложнее, чем научиться водить машину, сложно представить те времена, когда приходилось бороться за каждый мегабайт данных, а сохранять копировать на дискетах. Да… были времена. Помниться, мой первый комп имел винт в 2 гектара, под рукой я всегда хранил загрузочные дискеты на случай войны, а VC был пятизвездочным удобством. Да…скудные были времена.
Вы никогда не задумывались, почему давно игры занимали мало, а теперь их размер растет чуть ли не в геометрической прогрессии! Да, да, вы сразу скажете, что вот мыл графика, и скорость и миссий побольше, но…факт остается фактом, скоро что бы пошпилить в игру типа Готика 1, с таким же набором миссий и размером карты, придется освобождать 20-30 гектаров, иметь 4 ядра видеокарту и 2 ядра проц (ну или 4). Прогресс? Нет – лень! Есть простая истина – чем сложнее программный продукт, тем больше в нем ошибок будет. Я вот помню шпилил Квейка первого в Досе – никаких проблем, а вот с 4 постоянно вылетала ошибка! Конечно, сейчас глупо писать игры под ДОС, но… многие пишут.
Ладно, синтаксис утилиты ERASE, которая используется в командной строке для удаления файлов, следующий:
ERASE [диск:] [путь]имя_файла [/Р] [/F] [/S] [/Q] [/А[: атрибуты] ]
[диск:] [путь]имя_файла – тут прописываем путь к удаляемому объекту
/P – данный атрибут будет спрашивать согласия на уничтожение каждого объекта, хранящегося в каталоге
/F – удаляет объект, даже с атрибутом «Только для чтения»
/S – этот параметр позволит удалить (все файлы) файл через командную строку, включая данные во вложенных каталогах
/Q – отключаем вывод запроса на подтверждение уничтожения.
/А[: атрибуты] – данный атрибут хорош тем, что позволяет убивать только определенные объекты, например, имеющие следующие атрибуты:
- R — «Только для чтения»
- Н — «Скрытый»
- S — «Системный»
- А — «Архивный»
Использование специальных знаков, типа “?” (любой один знак) и “*” (любое количество знаков) позволяет задавать шаблон для удаляемых объектов.
Чаще всего, начинающим программистам приходится учиться сортировать матрицы. Конечно, кому эта матрица нужна, зато такие заморочки позволяют прокачать мозги под нужный угол. Взять для примера такую задачу: Надо создать программу, которая будет удалять каталог, размер которого превышает, ну скажем 20 метров. Если под руками нет Делфи, или даже Бейсика, то можно для этой цели сделать простенький командный файл, ему мы будем передавать в качестве параметра путь к каталогу, в котором надо найти превышающие лимит папки. И так, удалить файл через командную строку можно посредством утилиты ERASE, но вот как определить размер каталога? Конечно, можно создать дополнительный батник, который посредством цикла FOR и рекурсии будет подсчитывать размер всех файлов в папке, но…для этого умные люди придумали утилиту DIRUSE. И так:
@echo off
DIRUSE /S /M /Q:20 /L /* %1
REM Извлекаем из файла diruse.log строки, содержащие пути
REM к каталогам
FIND ":" diruse.log > 123.txt
REM Удаляем все папки, пути к которым прописаны в 123.txt
FOR /F "TOKENS=1,2*" %%i IN (123.txt) DO (RMDIR /S /Q %%j)
И так, первая строчка отключает вывод текста и команд. Все что следует после REM является комментарием. Утилита FIND ищет в логе diruse.log строку «:», результат записывает в текстовый документ 123.txt. А теперь по подробней:
Ключи утилиты DIRUSE:
/S – выводит информацию обо всех подкаталогах заданного каталога
/М – объем проверяемых каталогов задается в мегабайтах
/Q:20 – задаем лимит в 20 мегабайт
/L — позволяет записывать имена каталогов, размеры которых превышают указанный предел. Запись производится в файл diruse. log в текущем каталоге.
Объяснение к циклу FOR:
/F – указываем, что перебор происходит в текстовом файле
TOKENS – определяем, какие поля лексем использовать в каждой исходной строке
RMDIR – утилита для удаления каталога с файлами
Прописываем вышеприведенный код в текстовый документ (желательно для этих целей использовать Notepad++), меняем расширение на bat. Далее, запускаем командную строку, заходим в папку с нашим батником и прописываем следующую команду:
ИмяБатника «Путь_к_папке», например:
Erase_d.bat d:test.
Вот такими вот извращениями в прошлом занимались нынешние работники компании Microsoft , командная строка удалить файл.