Небольшой F.A.Q по BAT/CMD

Discussion in 'Безопасность и Анонимность' started by OneSelf, 23 Feb 2010.

  1. OneSelf

    OneSelf Banned

    Joined:
    6 Dec 2009
    Messages:
    11
    Likes Received:
    25
    Reputations:
    5
    Архивирование по расписанию и запись архива на CD-RW

    echo off
    rar a 1C_ -agYYYY.MM.DD -dh -m5 @c:\windows\rarfiles.lst
    G:
    cd\
    cd BACKUP_ALL\Sheduler
    copy *.rar G:\BACKUP_ALL\CD-RW
    copy *.rar G:\BACKUP_ALL\1C_BASES
    cd ..
    cdimage -g -h -n -o -w1 -m CD-RW BackUp-1c.iso
    cdburn H: -erase
    cdburn H: -sao BackUp-1c.iso
    echo Y|erase BackUp-1c.iso
    cd CD-RW
    echo Y|erase *.rar
    cd ..
    cd Sheduler
    echo Y|erase *.rar


    пример rarfiles.lst
    D:\BASES1C\2007~1 (если более чем 8.3)
    D:\BASES1C\PT2005

    P.S. забыл сказать, что у майкрософт есть бесплатные утилиты для пакетной работы с CD/DVD
    cdimage
    cdburn
    dvdburn

    Эти утилиты свободно распространяются в составе Resource Kit (скачать ).
    ************************************************** **************
    Отключение компьютера по условию
    Иногда требуется чтобы компьютер был выключен после того как какой-нибудь скрипт/батник выполнил свою задачу.
    Для этого надо чтобы скрипт/батник в конце работы скопировал какой-нибудь файл, например, на С: (или куда вам угодно)
    Почему не просто установить время отключения фиксировано? Очень просто: в больших организациях Б/Д разрастаются просто
    как на дрожжах и поэтому трудно скорректировать время отключения. И еще один момент, можно воспользоваться внутренней
    командой shutdown для отключения виндовс, но мной было замечено, что очень часто эта команда не может выключить РС.
    Поэтому я воспользовался XP Tweake. Работает великолепно.
    Только надо чтобы при включении компьютера удалялся файл C:\halt.h
    Это удобно когда, например, машина "А" забрала еже-ночной/дневной архив с машины "В" и оповестила об этом
    удаленный компьютер скопировав туда halt.h (название файла конечно произвольное)

    if not exist C:\halt.h GOTO Alles
    C:
    cd\
    cd "Program Files\XP Tweaker"
    XPTweaker.exe /shutdown /force
    :Alles
    exit


    ************************************************** ***************
    Как из пакетного файла сделать экспорт реестра
    Иногда возникает необходимость сохранить в файл определенный куст (ветку) реестра со всеми параметрами в качестве бэкапа или для других целей. Сделать это из пакетного файла можно при помощи такой команды:

    regedit.exe -ea C:\environment.reg "HKEY_CURRENT_USER\Environment"

    Данная команда при выполнении пакетного файла выгрузит ветку HKEY_CURRENT_USER\Environment в файл C:\environment.reg Когда потребуется восстановить значения параметров в HKEY_CURRENT_USER\Environment, будет достаточно запустить файл environment.reg. Эту команду можно использовать для ежедневного бэкапа настроек программного обеспечения и системы, которые хранятся в реестре.
    Не забывайте, что если в пути, по которому должен быть сохранен выходной файл или в имени ветки реестра есть пробел, то их необходимо заключить в кавычки.

    ************************************************** *****************

    Как из bat файла обойти проверку даты
    Некоторое программное обеспечение при запуске проверяет текущую системную дату. Если дата больше, чем заложено разработчиком, то программа не запускается. Например, разработчик считает, что версия программы может отработать месяц, а потом пользователь должен будет установить обновленную версию программы. С одной стороны это забота о пользователе, который будет иметь в своем распоряжении свежую версию программы с устраненными недочетами, по отношению к прошлым версиям. С другой стороны, производитель вынуждает пользователя скачивать новую версию даже если пользователя полностью устраивает та версия программы, которая у него установлена. Данную проблему можно легко решить при помощи следующего пакетного файла, который будет запускать программу, дожидаться ее завершения и возвращать дату на ту, которая была до запуска программы.

    set tempdate=%date:~-10%
    date 01-01-04
    notepad.exe
    date %tempdate%


    В данном примере текущая системная дата сначала сохраняется в переменной, затем (во второй строке) системная дата устанавливается на 1-е января 2004 года, а потом вызывается программа, которая проверяет системную дату. В данном примере это Блокнот. До тех пор, пока открыт Блокнот, пакетный файл находится в ожидании, не завершаясь и не переводя системную дату обратно. Как только Блокнот будет закрыт, пакетный файл продолжит свое выполнение и установит системную дату на сохраненное в переменной tempdate значение, т.е. на то, которое было до запуска пакетного файла.
    Не забывайте, что если путь до файла, которым запускается программа, содержит пробелы, то его (путь) необходимо заключить в кавычки. Если путь содержит кириллицу, то при написании пакетного файла необходимо использовать текстовый редактор, поддерживающий кодировку DOS (например, FAR). В противном случае, при запуске пакетного файла будет выведено сообщение о том, что "указанный файл не является внутренней или внешней коммандой...".
    Если программа проверяет текущую системную дату только при своем запуске и во время работы больше этого не делает, то пакетный файл можно модифицировать, добавив перед именем исполняемого файла программы оператор start, т.е. наш пример будет выглядеть так:

    set tempdate=%date:~-10%
    date 01-01-04
    start notepad.exe
    date %tempdate%


    В этом случае, пакетный файл изменит системную дату, запустит программу и не дожидаясь ее завершения вернет дату на ту, которая была до запуска программы.

    ************************************************** ********
    Как изменить IP адрес компьютера из пакетного файла

    IP адрес можно изменить при помощи команды netsh.
    Чтобы правильно сменить IP адрес, сначала надо выяснить текущую конфигурацию. Сделать это можно в командной строке при помощи команды

    netsh interface ip show address


    Результат работы этой команды - отображение текущей конфигурации сетевого интерфейса. Нас интересует название интерфейса. Предположим, что он называется FASTNET.
    Предположим, что нужно сменить IP адрес на 192.168.1.42, адресация в сети статическая, без использования DHCP, шлюз 192.168.1.1, маска 255.255.255.0 В этом случае, команда, которая должна быть выполнена из пакетного файла будет выглядеть следующим образом:

    netsh interface ip set address name="FASTNET" static 192.168.1.42 255.255.255.0 192.169.1.1 1


    После выполнения этой команды у интерфейса FASTNET IP адрес сменится на 192.168.1.42.
    Команда netsh предоставляет широкие возможности по управлению сетевыми настройками из командной строки. Для ознакомления с другими ее функциональными возможностями пользуйтесь справкой при помощи netsh /?

    ************************************************** **********
    Передаём параметры бат-файлу
    Иногда случается, что надо сотрудницам ежедневно делать одну и туже работу:
    подготовить отчет за какой-то отчетный период,создать какой-то каталог и положить в него файлы,
    заархивировать и потом куда-то отправить.
    Процесс "создать, положить и заархивировать" можно автоматизировать, чем облегчить труд секретаря, бухгалтера или еще кого.
    (исправте только названия и пути)
    Rem Сбор данных для отправки в Офис
    Rem При смене года измените руками d05%1%2a.xls на d06%1%2a.xls,
    Rem w05%1%2а.xls на w06%1%2а.xls, B05%1%2A.txt на B06%1%2A.txt,
    Rem O05%1%2A.TXT на O06%1%2A.TXT и 2005%1%2 на 2006%1%2

    If Not /%1/==// goto GoOn1
    Echo Параметры: ММ ДД
    Echo Первый параметр - номер месяца
    Pause > Nul
    goto Alles

    :GoOn1
    If Not /%2/==// goto GoOn2
    Echo Параметры: ММ ДД
    Echo Второй параметр - номер дня
    Pause > Nul
    goto Alles

    :GoOn2

    G:
    cd\
    cd G:\Otchet\_Out\_alw
    mkdir f634
    cd..
    cd G:\Otchet\_Out\_alw\f634

    Copy M:\Work\OVP\F634*.frm O06%1%2A.TXT
    Copy G:\PrBank\MOD\RABM1\Text\B06%1%2A.txt
    Copy G:\PrBank\MOD\RABM5\Text\B06%1%2A.txt
    Copy G:\PrBank\MOD\RABM9\Text\B06%1%2A.txt
    Arj m SPOSAD *.TXT
    c:
    :Alles


    ************************************************** ************
    Создаем каталог
    Если вы каждый день создаете каталог в формате DD MM, то этот процесс можно облегчить
    если использовать этот бат-файл
    Rem Создаем каталог
    If Not /%1/==// goto GoOn1
    Echo Параметры: DD MM
    Echo Первый параметр - номер дня
    goto Alles

    :GoOn1
    If Not /%2/==// goto GoOn2
    Echo Параметры: DD MM
    Echo Второй параметр - номер месяца
    GoTo Alles

    :GoOn2

    g:
    cd\
    cd otchet\_in
    mkdir %1%2


    ************************************************** ******************
    Как запретить повторный запуск приложения
    Если приложение запускается bat-файлом, то отследить (и запретить) его повторный запуск можно таким образом:
    pslist.exe -e "процесс"
    if %errorlevel%==1 start "" "программа"
    pslist - бесплатная утилита, которую можно скачать здесь .


    ************************************************** *****************
    Как в bat файле дождаться появления определенного файла
    Иногда необходимо при появлении определенного файла в папке выполнить какое-то действие. Чтобы организовать проверку появления файла в папке можно использовать следующий пакетный файл

    :test
    if exist c:\1.txt goto go
    sleep 10
    goto test
    :go
    notepad


    Такой пакетный файл будет проверять с интервалом 10 секунд наличие в корне диска С файла 1.txt и когда файл 1.txt появится, будет выполнено действие, указанное после метки go, т.е. в этом примере будет запущен Блокнот.
    Утилита sleep свободно распространяется в составе Resource Kit(скачать ).

    Если файл 1.txt большого размера и копируется откуда-то, то может получится так, что пакетный файл проверит его наличие в то время, как файл еще не скопировался или занят другим приложением. В таком случае, попытка выполнить какие-то действия с файлом 1.txt приведет к ошибке. Чтобы этого не произошло пакетный файл можно модифицировать следующим образом

    :test
    if exist c:\1.txt goto go
    sleep 10
    goto test
    :go
    rename c:\1.txt 1.txt
    if not errorlevel 0 goto go
    del c:\1.txt


    Когда файл 1.txt скопировался на диск С не полностью, либо занят другим приложением, попытка его переименовать вызовет ошибку и цикл будет повторяться до тех пор, пока файл не скопируется полностью либо не будет освобожден. После того, как команда rename c:\1.txt 1.txt будет выполнена без ошибки (т.е. файл свободен), то с ним можно выполнять любые действия. В последнем примере это его удаление.
    ************************************************** **
    Как из одного bat-файла запустить другой
    Иногда, при выполнении пакетного файла, возникает необходимость запустить другой пакетный файл. Причем, в некоторых случаях, выполнение основного пакетного файла должно быть приостановлено, пока выполняется вспомогательный файл, а в других вспомогательный файл должен работать параллельно с основным.
    Для примера создадим два bat файла. Один с именем 1.bat и содержащий всего одну команду

    call 2.bat

    Второй с именем 2.bat и также содержащий одну команду

    pause

    Теперь запустим файл 1.bat Откроется окно, в котором будет предложено нажать любую клавишу для продолжения, после нажатия которой окно закроется. Таким образом, вызов из одного пакетного файла другого при помощи команды call останавливает исполнение пакетного файла до тех пор, пока не завершится выполнение пакетного файла, вызванного командой call.
    В другом случае, надо запустить из bat файла либо приложение, либо другой пакетный файл, не прерывая выполнения основного пакетного файла. Такое нередко бывает нужно сделать, например, принудительно открыв лог работы пакетного файла, запланированного на ночь, чтобы с утра, пользователь мог проконтролировать правильность его выполнения. Для этого используется команда start Исправим в файле 1.bat строку на

    start 2.bat

    и запустим файл 1.bat Теперь открылось окно, в котором для продолжения надо нажать любую кнопку, а окно основного пакетного файла (1.bat) отработав закрылось.
    Таким образом, для вызова из одного пакетного файла другого, без остановки работы первого пакетного файла, нужно применять команду start.
    Рассмотренные команды start и call могут использоваться не только для запуска других пакетных файлов, но и для запуска любых приложений или открытия файлов.
    Например, команда start log.txt, находящаяся в теле пакетного файла, откроет файл log.txt в Notepad без остановки работы пакетного файла.

    ************************************************** **

    Как автоматизировать удаление файлов по типу
    Чтобы очистить диск от временных файлов можно использовать команду

    del /f /s /q C:\*.tmp

    Где
    /f - удаляет все файлы, даже если у них установлен атрибут только чтение
    /s - удаляет файлы из всех подкаталогов
    /q - отключает запрос на подтверждение удаления файла
    C: - диск, на котором будут найдены и удалены файлы. Можно указать не весь диск, а папку, например, C:\WinNT
    *.tmp - тип файлов, которые будут удалены
    Будьте аккуратны с ключем /q и типами удаляемых файлов. Команда удаляет, не спрашивая разрешения и при указании неправильного типа файлов может удалить лишнего.

    ****************************************************

    Защита Flash-ки от записи новых файлов.

    Защита флешки от записи новых файлов осуществляется путем определения свободного пространства на ней, с последующим полным его заполнением, используя утилиту fsutil. Такой метод отлично подходит, например, для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF.

    Fsutil является служебной программой командной строки. Для использования программы fsutil необходимо войти в систему с помощью учетной записи администратор или члена группы администраторов.
    можно вывести Help:
    fsutil /?

    Такой способ, как выяснилось в результате тестирования, имеет 1 минус:

    1. Создание больших файлов занимает несколько минут времени. А если понадобилось удалить защитный файл, дописать что-то на флешку, а потом снова выставить защиту? Снова теряется время на создание большого файла

    Создаём файл VirusKaput.cmd:

    @echo off
    setlocal enabledelayedexpansion
    set /a sizofile=1024 * 1024 * 1024
    for /l %%K in (1,1,256) do (
    for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
    if !freespace! EQU 0 goto ready
    if !freespace! GTR !sizofile! (
    call :getime
    fsutil file createnew "%~d0\[ 1024 Mb ] !randtime!" !sizofile!
    ) else (
    for /l %%K in (1,1,5) do (
    for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
    set /a sizofilemb=!sizofile! / 1024 /1024 / 2
    set /a sizofile=!sizofile! / 2
    if !freespace! GEQ 67108864 (
    if !freespace! GEQ !sizofile! (
    call :getime
    fsutil file createnew "%~d0\[ !sizofilemb! Mb ] !randtime!" !sizofile!
    )
    ) else (
    if !freespace! EQU 0 goto ready
    call :getime
    fsutil file createnew "%~d0\[ 1-63 Mb ] !randtime!" !freespace!
    goto :EOF
    )
    )
    )
    )

    :getime
    set randtime=!time:~-10!
    set randtime=!randtime::=!
    set randtime=!randtime:,=!
    exit /b


    Логика работы кода следующая:

    * определяется количество свободного пространства на флешке
    * если свободного пространства больше 1Gb — создаем файлы размером 1Gb до тех пор, пока это условие выполняется
    * Когда свободного пространства меньше 1 гигабайта — последовательно пытаемся создать файлы размером 512Mb, 256Mb, 128Mb, 64Mb и последний файл размером от 1 до 63Mb

    В итоге на флешке создается примерно следующая структура файлов, заполняющая все свободное место (7-значный уникальный код в конце названия каждого файла необходим для избежания ошибки создания файлов с одинаковыми именами):

    [ 1-63 Mb ] 7344296
    [ 64 Mb ] 7343581
    [ 256 Mb ] 6050959
    [ 512 Mb ] 6043075
    [ 1024 Mb ] 2341570
    [ 1024 Mb ] 2353157


    После установки на флешку такой защиты, нельзя ничего с нее удалять (включая и упомянутый bat-файл), иначе защита перестанет действовать. Для снятия защиты от записи новых файлов (например, при необходимости записать что-то на флешку), необходимо удалить один или несколько созданных таким образом файлов минимально необходимого размера, и записать свои данные. Восстановление защиты после этого займет минимальное время.

    Строго говоря, такой метод нельзя считать полным аналогом аппаратного переключателя «read-only», имеющегося на некоторых видах флешек. Даже если флешка защищена от записи новых файлов описанным методом, вирус имеет возможность создать файл autorun.inf на флешке — но вот записать что-либо в этот файл уже не сможет.

    Следует также заметить, что вирус имеет возможность поразить потенциально уязвимые файлы, уже содержащиеся на флешке, ввиду остатка свободного места (обусловленного кластерностью) выделенного для хранения файла. Но тенденции развития функционала вирусов позволяют говорить о том, что сегодня вирусы все меньше поражают отдельные файлы, а все больше используют уязвимости операционной системы Windows.

    Таким образом, считать такой способ защитой от записи можно только в контексте невозможности создания на флешке непустых новых файлов. Что однако, как показывает практика, является серьезной мерой защиты от autorun-вирусов. Как говорилось выше, этот метод отлично подходит для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF, а также для флешек с личным набором необходимого программного обеспечения, подключаемого к чужим компьютерам.

    взято отсюда http://www.cyberforum.ru/cmd-bat/thread12941.html
     
    #1 OneSelf, 23 Feb 2010
    Last edited: 23 Feb 2010
    3 people like this.
  2. SpangeBoB

    SpangeBoB Elder - Старейшина

    Joined:
    12 Jul 2008
    Messages:
    1,680
    Likes Received:
    393
    Reputations:
    102
    Копирайты нынче не в моде?
     
    1 person likes this.
  3. OneSelf

    OneSelf Banned

    Joined:
    6 Dec 2009
    Messages:
    11
    Likes Received:
    25
    Reputations:
    5
    ок спс) подправил^^
     
  4. xxxBARTONxxx

    xxxBARTONxxx New Member

    Joined:
    11 Oct 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    -5
    подскажите пожалуйста прожку чтоб 123.bat конвертировать в 123.exe, но чтоб к в этот 123.ехе ещё можно было прилепить ещё один файлик temp.ехе, и чтоб при запуске запускался сначала файл temp.ехе а потом уже скрипт, тоесть 123.bat

    пробовал Bat To Exe и Quick Batch File Compiler, но почему-то файлик temp.ехе не хочется не в какую запускаться...
     
  5. OneSelf

    OneSelf Banned

    Joined:
    6 Dec 2009
    Messages:
    11
    Likes Received:
    25
    Reputations:
    5
    BatExec попробуй
     
  6. xxxBARTONxxx

    xxxBARTONxxx New Member

    Joined:
    11 Oct 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    -5
    OneSelf, вы меня не поняли =)
    мне нужно склеить bat и ехе файлик, и желательно без лишних действий, тоесть без джойнера))
    в этих прогах есть данная функция Bat To Exe и Quick Batch File Compiler, но у меня почему приклееный ехе файл не запускается
     
  7. OneSelf

    OneSelf Banned

    Joined:
    6 Dec 2009
    Messages:
    11
    Likes Received:
    25
    Reputations:
    5
    Попробуй так: добавить bat файл в sfx архив, впиши в коментариях:
    Setup=файл_для_запуска
    TempMode
    Silent=1
    Overwrite=1
    Для смены иконки нажми параметры sfx и в кладке Текст и графика нажми загрузить значок.
    После этого ты получишь exe файл. Далее все делаешь как при склеивании двух обычных exe файлов.
     
  8. xxxBARTONxxx

    xxxBARTONxxx New Member

    Joined:
    11 Oct 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    -5
    вот это отличная идея! =)
    а можно в архив sfx залить bat и ехе и чтоб при открытии сразу оба запустились?
     
  9. OneSelf

    OneSelf Banned

    Joined:
    6 Dec 2009
    Messages:
    11
    Likes Received:
    25
    Reputations:
    5
    Да exeшки то склеять не проблема=)
     
  10. xxxBARTONxxx

    xxxBARTONxxx New Member

    Joined:
    11 Oct 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    -5
    ну мне в лом чем то клеить, тем более это когда нибудь спалиться анитивирусами, а винрар уж точно палиться не будет =)

    как оба файла то запустить из sfx, это возможно вообще? =)
     
  11. BLaZeViL

    BLaZeViL Elder - Старейшина

    Joined:
    19 Mar 2008
    Messages:
    73
    Likes Received:
    9
    Reputations:
    0
    А в батнике прописать запуск екзешника, чем тебе не нравиться?
     
  12. 1kaktyc

    1kaktyc Member

    Joined:
    9 Sep 2009
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    что писать чтобы запустило программу подождало 5 сек закрыло ее и повторяла тоже самое в течении заданого времени ?
     
  13. BLaZeViL

    BLaZeViL Elder - Старейшина

    Joined:
    19 Mar 2008
    Messages:
    73
    Likes Received:
    9
    Reputations:
    0
    Если ты хочешь сделать трой такой) то юзер сам с испуга будет пытатся закрыть её)