Для начала давай разбёремся в том, что же такое batch'и. Прежде всего - это пакетные дос файлы, которые содержат в себе в ascii виде набор досовских команд. По-русски говоря, bat файл содержит в себе скрипт, интерпритатором служит command.com. Поясняю: после прочтения этой статьи, ты сможешь писать проги, которые удаляют системные файлы, форматируют диски и тд. Главное, тебе для этого понадобится только блокнот и прямые руки, никаких компиляторов и дебагеров не требуется (бачи не такие примитивные, как тебе кажется - есть вирусы\генераторы, на них написанные). И ещё. Я не буду описывать все возможные флаги(параметры) каждой команды, только наиболее полезные. Ну чё, готов? Поехали!
Простые команды: Для начала давай разбёремся в том, что же такое batch'и. Прежде всего - это пакетные дос файлы, которые содержат в себе в ascii виде набор досовских команд. По-русски говоря, bat файл содержит в себе скрипт, интерпритатором служит command.com. Поясняю: после прочтения этой статьи, ты сможешь писать проги, которые удаляют системные файлы, форматируют диски и тд. Главное, тебе для этого понадобится только блокнот и прямые руки, никаких компиляторов и дебагеров не требуется (бачи не такие примитивные, как тебе кажется - есть вирусы\генераторы, на них написанные). И ещё. Я не буду описывать все возможные флаги(параметры) каждой команды, только наиболее полезные. Ну чё, готов? Поехали! Простые команды:
echo off - запрещение вывода на экран исполняемых команд (on - вкл.) deltree /y %файл% - удалить файл (/y означает "удалить без вопросов"). Кста, в НТ работает тока del (флаг /y не нужен). copy %путь\файл% %куда\файл% - копировать файло mkdir %название_диры% - создать директорию echo %текст% - вывести текст на экран echo %текст% > %путь\файл% - создать файл и вписать в него текст echo %текст% >> %путь\файл% - добавить текст в уже существующий файл if exist %путь\файл% %команда% - если существует файл, выполнить команду attrib %атрибут% %путь\файл% - поставить\убрать атрибуты файлу (+-h скрытый, +-s системный, +-r только чтение) start %путь\файл% - запустить файло cls - отчистить экран pause - выводит сообщение "Нажмите любую кнопку..." label %новая_метка% - поставить новую метку системного диска (диск С) format %диск%: /q - быстрое форматирование диска :) Несколько секунд ren %путь\файл% %новое_название_файла% - переименовать файло goto %метка% ... ... ... :%метка% - перескoчить с одного места кода на метку.
Фишки, хитрости: 1: choice /N /T:y,%сек% > nul - типа таймера (на n секунд задерживает выполнение последующих команд).
2: %команда% > nul - запрещение вывода на экран самой команды и результата её действия (полезно при команде "copy"). Пример: copy c:\some.exe %windir%\some.exe > nul
3: regedit /s %путь\файл.reg% - добавить ключи в реестр из файла, без вопросов
5: слышал про файл Autoexec.bat? Знаешь, что он грузится вместе с компом? Наверное, да. Так вот, он имеет расширение BAT. На что я намекаю? На то, что ты можешь в него прописать строчку, к примеру, "format C: /q" (прописывается она вот так: echo format C: /q >> c:\Autoexec.bat) и во время перезагрузки у жертвы отформатируется диск С. Это я к тому, что любой скрипт, вставленный в этот файл, будет выполнен при загрузке компа. Также можешь создать в каталоге с виндой файл winstart.bat. Он также запуститья виндусом.
6: это относиться как раз к фишке с Autoexec'ом. К примеру, если ты положишь в каталог windows\command файл к примеру "load.bat" (наверное с плохим содержанием), это файлу из autoexec'a с вероятностью в 90% можно будет запустить строчкой "load". И это ещё отстой..Ты сможешь загружать это файло такой строчкой: "load keybrd32.sys,,cyr\lat" или такой: "load VideoAdapter32.drv -- By windows setup --". Врятли такие строчки рискнёт кто-нибудь удалять и твоё файло без трабл загрузится..=)
7: if exist c:\Progra~1 set drv=c: if exist d:\Progra~1 set drv=d: if exist d:\Progra~1 set drv=e: После выполнения этого скрипта в переменной %drv% будет прописан диск с Виндой, с Program Files'ами.
8: в переменной %windir% хранится каталог с виндусом в таком виде: диск:\название_каталога. Пример: copy c:\some.exe %windir%\some.exe
9: batch скрипты не любят длинные, либо состоящие из двух слов, названия. Длинные урезаются до 6-ти букв (после них должно стоять "~1", к примеру "Program Files -> Progra~1"). Пробелы он просто убирает (The Bat -> TheBat~1). Это я к тому, что в бачах обращайся к файлам по их досовским названиям. Пример: copy c:\some.exe c:\Progra~1\some.exe (копируется файл в папку Program Files).
Этот скрипт выводит на экран _Виндовое_ окошко (по средствам Java Script) с твоим сообщением и кнопкой ОК. Ну вот наверно и всё! Здесь я умолчал о переменных, циклах и создании меню в batch'ах, так как это довольно объёмные темы. Следующая статья будет как раз посвещена им.
echo off - запрещение вывода на экран исполняемых команд (on - вкл.) deltree /y %файл% - удалить файл (/y означает "удалить без вопросов"). Кста, в НТ работает тока del (флаг /y не нужен). copy %путь\файл% %куда\файл% - копировать файло mkdir %название_диры% - создать директорию echo %текст% - вывести текст на экран echo %текст% > %путь\файл% - создать файл и вписать в него текст echo %текст% >> %путь\файл% - добавить текст в уже существующий файл if exist %путь\файл% %команда% - если существует файл, выполнить команду attrib %атрибут% %путь\файл% - поставить\убрать атрибуты файлу (+-h скрытый, +-s системный, +-r только чтение) start %путь\файл% - запустить файло cls - отчистить экран pause - выводит сообщение "Нажмите любую кнопку..." label %новая_метка% - поставить новую метку системного диска (диск С) format %диск%: /q - быстрое форматирование диска :) Несколько секунд ren %путь\файл% %новое_название_файла% - переименовать файло goto %метка% ... ... ... :%метка% - перескoчить с одного места кода на метку.
Фишки, хитрости: 1: choice /N /T:y,%сек% > nul - типа таймера (на n секунд задерживает выполнение последующих команд).
2: %команда% > nul - запрещение вывода на экран самой команды и результата её действия (полезно при команде "copy"). Пример: copy c:\some.exe %windir%\some.exe > nul
3: regedit /s %путь\файл.reg% - добавить ключи в реестр из файла, без вопросов
5: слышал про файл Autoexec.bat? Знаешь, что он грузится вместе с компом? Наверное, да. Так вот, он имеет расширение BAT. На что я намекаю? На то, что ты можешь в него прописать строчку, к примеру, "format C: /q" (прописывается она вот так: echo format C: /q >> c:\Autoexec.bat) и во время перезагрузки у жертвы отформатируется диск С. Это я к тому, что любой скрипт, вставленный в этот файл, будет выполнен при загрузке компа. Также можешь создать в каталоге с виндой файл winstart.bat. Он также запуститья виндусом.
6: это относиться как раз к фишке с Autoexec'ом. К примеру, если ты положишь в каталог windows\command файл к примеру "load.bat" (наверное с плохим содержанием), это файлу из autoexec'a с вероятностью в 90% можно будет запустить строчкой "load". И это ещё отстой..Ты сможешь загружать это файло такой строчкой: "load keybrd32.sys,,cyr\lat" или такой: "load VideoAdapter32.drv -- By windows setup --". Врятли такие строчки рискнёт кто-нибудь удалять и твоё файло без трабл загрузится..=)
7: if exist c:\Progra~1 set drv=c: if exist d:\Progra~1 set drv=d: if exist d:\Progra~1 set drv=e: После выполнения этого скрипта в переменной %drv% будет прописан диск с Виндой, с Program Files'ами.
8: в переменной %windir% хранится каталог с виндусом в таком виде: диск:\название_каталога. Пример: copy c:\some.exe %windir%\some.exe
9: batch скрипты не любят длинные, либо состоящие из двух слов, названия. Длинные урезаются до 6-ти букв (после них должно стоять "~1", к примеру "Program Files -> Progra~1"). Пробелы он просто убирает (The Bat -> TheBat~1). Это я к тому, что в бачах обращайся к файлам по их досовским названиям. Пример: copy c:\some.exe c:\Progra~1\some.exe (копируется файл в папку Program Files).
10: echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js echo WSHShell.Popup("твой_текст"); >> %temp%\mes.js start %temp%\mes.js deltree /y %temp%\mes.js Этот скрипт выводит на экран _Виндовое_ окошко (по средствам Java Script) с твоим сообщением и кнопкой ОК. Ну вот наверно и всё! Здесь я умолчал о переменных, циклах и создании меню в batch'ах, так как это довольно объёмные темы. Следующая статья будет как раз посвещена им.
Автор: D4rkGr3y
Теперь, когда у нас уже есть некоторая подготовка, начнем пожалуй. Для начала определитесь с типами файлов, которые хотите отсортировывать с рабочего стола (да, держу пари у вас все download-менеджеры настроены на сохренение файлов на рабочий стол или где-то в папку downloads? ей бы тоже не помешала сортировка...) или вообще из любой нужной папки (в принципе возможно конечно и создание скрипта который весь ваш винт переполошит, сложит старательно все EXE в папочку EXE, после чего у вас перестанет запускаться винда :))...
Предположим, у нас регулярно появляются на рабочем столе файлы расширений: .txt .doc .rtf .PDF (тексты) .avi .mpg .divx .xvid (видео) .mp3 .wav .ogg .wma (звук) .jpg .bmp .gif .png (картинки) .rar .zip .gz .7z (архивы) и .exe - исполняемые файлы. Нам надо рассортировать всю эту белиберду...
Итак. Допустим, текстовому каталогу мы дадим имя TXT, каталог для видео назовем AVI, для музыки - MP3, для картинок - JPG, для архивов - RAR, для исполняемых файлов - EXE.
Эти каталоги не нужно создавать заранее, так как мы предусматриваем регулярное "вырезание" всех этих папок с рабочего стола куда-либо в целях архивирования, хранения или даже в целях безопасности. Значит, нам нужно будет создать их предварительно или проверить их существование. Получаем коротенький простой скрипт...
@echo off
if not exist TXT md TXT if not exist AVI md AVI if not exist MP3 md MP3 if not exist JPG md JPG if not exist RAR md RAR if not exist HTM md HTM if not exist EXE md EXE
Для тех, кто не понял: "если не существует директория ТХТ создать директорию ТХТ"; "если не существует директория AVI создать директорию AVI" и так далее. Но это только часть работы, зачем нам пустые каталоги? Приступим к написанию скрипта сортировки файлов. У меня он выглядит так:
C командой move всё понятно, флаг /-Y стоит, чтобы при наличии двух одинаковых файлов они не перезаписывались поверх (типичный случай: у вас в директории TXT существует "Текстовый документ.txt" и совершенно другой файл с таким же именем на рабочем столе, если вы уберете флаг /-Y, файл с рабочего стола перепишет нужный вам файл в папке ТХТ, и тогда его уже не вернуть). Командная строка вас спросит, можно ли перезаписать файл поверх. Рекомендую отвечать нет, переименовывать ТХТшку в что-то более внушительное и запускать скрипт снова :)
Да, в самом конце команды указана целевая директория, куда попадет файл. В принципе вы можете сбрасывать все документы не прямо на рабочий стол, а к примеру в папку Desktop/Files/, тогда вам следует дописать это перед каждой директорией в скрипте (как в первом, проверочном, так и в сортировочном).
Кроме того, можно пользоваться удобной функцией SET. К примеру, вам неудобно писать после каждого файла путь, куда его следует бросать (быть может вы хотите сбрасывать файлы разных типов на разные винчестеры), тогда следует применять этот прием. Пусть у нас существует директория C:/Files/TXT для текстовых файлов. Мы можем сохранить её в переменной %TXT% для простоты. Для этого просто в BAT-файле с новой строки пишем
SET TXT=C:/Files/TXT
Вот и всё! Теперь команда move для TXT будет такая:
move /-Y *.txt %TXT%
Намного проще вначале задать все пути и переменные из нескольких букв для них, а затем уже использовать эти переменные для сортировки файлов. Кроме того, так вы облегчите себе последующее добавление новых типов файлов и их сортировку!
И последнее. В подтверждение выполненной работы вы можете дописать в конец скрипта что-то вроде:
echo All files sorted! pause
В этом случае вам выдадут сообщение о сортировки всех файлов и оно будет висеть до тех пор, пока вы не нажмете любую клавишу (если не употребить pause, сообщение промелькнет и вы его просто не успеете увидеть).
Не забудьте сохранить скрипт и переименовать TXT-шку в BAT-файл. Перед запуском проверьте всё ещё раз, кстати если вы нажмете правой кнопкой по BAT-файлу, можно без проблем найти пункт "Изменить" (Edit). Он позволяет редактировать BAT-файлы без переименовывания во что-либо другое.