Архивирование по расписанию и запись архива на 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
подскажите пожалуйста прожку чтоб 123.bat конвертировать в 123.exe, но чтоб к в этот 123.ехе ещё можно было прилепить ещё один файлик temp.ехе, и чтоб при запуске запускался сначала файл temp.ехе а потом уже скрипт, тоесть 123.bat пробовал Bat To Exe и Quick Batch File Compiler, но почему-то файлик temp.ехе не хочется не в какую запускаться...
OneSelf, вы меня не поняли =) мне нужно склеить bat и ехе файлик, и желательно без лишних действий, тоесть без джойнера)) в этих прогах есть данная функция Bat To Exe и Quick Batch File Compiler, но у меня почему приклееный ехе файл не запускается
Попробуй так: добавить bat файл в sfx архив, впиши в коментариях: Setup=файл_для_запуска TempMode Silent=1 Overwrite=1 Для смены иконки нажми параметры sfx и в кладке Текст и графика нажми загрузить значок. После этого ты получишь exe файл. Далее все делаешь как при склеивании двух обычных exe файлов.
вот это отличная идея! =) а можно в архив sfx залить bat и ехе и чтоб при открытии сразу оба запустились?
ну мне в лом чем то клеить, тем более это когда нибудь спалиться анитивирусами, а винрар уж точно палиться не будет =) как оба файла то запустить из sfx, это возможно вообще? =)
что писать чтобы запустило программу подождало 5 сек закрыло ее и повторяла тоже самое в течении заданого времени ?