В BAT файлах можно использовать любые команды MS DOS. Смысл нашей программы будет в том, чтобы она создала папочку и скопировала туда содержимое текущей папочки. Пишем:
echo off
cls
echo start backup
mkdir backup
copy *.* backup
echo end backup
И смотрим в проводнике:
Вот так, все получилось ! И не надо постоянно копировать много файлов и создавать папочку. Совершенно не обладая навыками программирования Вы можете все-таки облегчить себе жизнь.
Обработка параметров в BAT файле
Вызывая из командной строки bat файл:
или из другого файла:
call 6.bat 18012002
Внутри этого BAT файла Вы можно обработать параметры. Для получения параметра мы должны использовать символ % и номер параметра. MS DOS заменит эту конструкцию переданным параметром. Давайте пробовать:
echo off
cls
echo start backup
mkdir %1
copy *.* %1
echo end backup
Команды BAT файлов
Специальных команд, которые используются в BAT файлах не много. Именно специальных, которые могут пригодиться при создании логики командного файла. Конечно, эти команды относятся к внутренним командам MS DOS и могут использоваться в командной строке, но все-таки эти команды обретают смысл только в пакетных файлах.
Как добавить BAT-файл или программу в автозагрузку Windows 10 (7,8.1)
call Вызов одного пакетного файла из другого.
echo Вывод сообщений и переключение режима отображения команд на экране.
for Запуск указанной команды для каждого из файлов в наборе.
goto Передача управления в отмеченную строку пакетного файла.
if Оператор условного выполнения команд в пакетном файле.
pause Приостановка выполнения пакетного файла и вывод сообщения
rem Помещение комментариев в пакетные файлы и файл CONFIG.SYS.
shift Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла.
Кстати Вы можете легко получить подсказку по каждой этой команде в сеансе MS DOS используя ключ /?
Как работают BAT файлы
Итак, у нас есть внутренние команды и внешние. После того как в BAT файле находится команда, то сначала проверяется есть ли такая команда внутри command.com. Например echo — это внутренняя команда и исполняет ее command.com. Если же эта команда не найдена, то будет произведен поиск файла с расширением exe или com во всех каталогах указанных в переменной среды PATH. Смотрите на рисунок ниже.
Команды echo и cls будут обработаны внутри command.com. А команда edit.com не будет обработана (кстати расширение можно не указывать) раз такой команды нет, то будут исследованы все доступные пути на предмет файлов с таким названием. Если файл будет найдет, то он будет запущен. Это очень важно, так как позволяет нам очень быстро используя простые средства разработки типа Turbo C++ или Turbo Pascal создавать расширения стандартных команд. Сразу скажу, что подобные программы должны создаваться для MS DOS, а современные средства разработки типа Visual C++ 6.0 не умеют создавать эти простенькие программы.
Использование PAUSE
Как создать bat файл в Windows
Сам код и EXE есть в проекте. Как этим EXE можно воспользоваться ? Смотрите:
runbats.exe times.txt temp.bat start.bat
Первый параметр — это файл откуда брать строку, второй параметр — это какой BAT файл сформировать, третий параметр — это какой BAT файл вызывать. Результат работы будет такой.
Борьба с недостатками окончание
Нам осталось только сложить все в месте. Пишем backup.bat:
times.exe times.txt
runbats times.txt temp.bat start.bat
temp.bat
Получить дату в файл, сформировать BAT файл с параметрами и запустить его. В результате работы все получится.
Вся идея в том, что последний BAT файл, который мы запускаем формируется динамически. А весь код, который нужно выполнить пишется в Start.bat. Если Вы хотите, чтобы копирование производилось на сервер, используйте UNC пути (см. «Шаг 18 — Universal Naming Convention — UNC»). Вот, например, BAT файл, который у меня работает.
mkdir \Serverswork%1
copy *.* \Serverswork%1
Можно добавить в автозапуск и Ваша папочка будет копироваться на сервер каждый день, кроме того Вы сможете найти копии по датам.
Борьба с недостатками
Одним из недостатков BAT файлов является то, что в результате работы какой-то программы мы не можем получить ее результат, кроме кода возврата. Ну, например, мы хотим, чтобы при запуске BAT файла производилось резервное копирование в папочку. Это мы можем сделать, а вот как сделать так, чтобы имя папки формировалось в соответствии с текущей датой.
Умея немного программировать для DOS это можно сделать. Напишем программу Times.exe, которая будет записывать в указанный файл текущую дату. Я использовал Borland C++ 3.1, Вы можете использовать все, что может делать программы в формате MS DOS. Вот код.
#include «stdio.h»
#include «process.h»
#include «FCNTL.H»
#include «string.h»
#include «io.h»
int main(int argc, char *argv[ ])
printf(«First Steps Site(C) 2002n»);
if (argc==4)
int ifile;
int ofile;
int rez;
ifile=_open(argv[1],O_RDONLY);
if (ifile!=-1)
char buffer[255];
rez=read(ifile,buffer,254);
if (rez!=-1)
printf(argv[1]);
printf(» «);
printf(argv[2]);
printf(» «);
buffer[rez]=0;
printf(buffer);
printf(«n»);
ofile=open(argv[2], O_CREAT | O_WRONLY | O_TRUNC);
if (ofile!=-1)
write(ofile,argv[3],strlen(argv[3]));
write(ofile,» «,2);
write(ofile,buffer,strlen(buffer));
close(ofile);
>
else
printf(«error createn»);
return 1;
>
>
else
printf(«error readn»);
return 1;
>
>
else
printf(«error open file n»);
return 1;
>
return 0;
>
else
printf(«error parametrsn»);
return 1;
>
>
Сам код и готовый EXE находится в проекте. Использовать его достаточно легко, надо создавать BAT файл, в котором передается параметр.
times.exe times.txt
В результате работы будет создан текстовый файл, в котором находится текущая дата.
Источник: pontin.ru
Что такое командный файл
Все пользователи компьютера время от времени сталкиваются с ними. Давайте разберемся, как они устроены и зачем нужны командные файлы в Windows. Командный файл представляет собой текстовый файл содержащий последовательность команд предназначенных для выполнения в командной строке Windows и имеющий расширение имени файла .bat или .cmd. Другими словами он снимает с человека необходимость вводить последовательно нужные команды в командной строке Windows, достаточно его запустить и все содержащиеся в нем команды будут выполнены. Обычно используется для автоматизации часто повторяющихся действий пользователя.
Они имеют множество названий, среди них часто встречаются: пакетный файл, сценарий, bat-файл, батник и так далее. Отличить пакетный файл от других файлов можно по иконке и расширению имени файла. Запускается на выполнение, так же как и все остальные исполняемые файлы.
Данной заметкой не ставится цель научить писать серьезные пакетные файлы, а только дать первоначальные сведения о них. Тема достаточно большая и имеет много тонких моментов, которые вы можете освоить при желании самостоятельно.
Создать новый пакетный файл можно в текстовом редакторе, например в «Блокноте». Главное сохранить его с расширением .bat или .cmd. Команды используются точно те же, что и в командной строке Windows. Каждая новая команда пишется с новой строки. Имеется возможность использовать переменные, условия и переходы к определенному месту в командном файле для создания сложных сценариев.
Например, следующий код создает новую папку с именем текущей даты на системном диске компьютера и экспортирует из реестра Windows куст HKEY_CURRENT_USERSoftware в файл с именем backup.reg.
MD %SYSTEMDRIVE%%date% reg export «HKEY_CURRENT_USERSoftware» «%SYSTEMDRIVE%%date%backup.reg» /y
Согласитесь, что гораздо проще один раз написать такой батник и запускать по мере необходимости в один клик, чем выполнять все эти действия вручную каждый раз.
Чтобы просмотреть содержимое или изменить командный файл необходимо щелкнуть по нему правой кнопкой мыши и выбрать пункт «Изменить». Он откроется в текстовом редакторе, где в него можно внести требуемые изменения.
Кириллица в BAT файле
С нашим великим и могучим языком как обычно проблемы. Как только в пути или имени файла окажутся русские буквы, командный файл откажется работать, хотя та же команда непосредственно в командной строке будет прекрасно выполняться. Никакой мистики здесь нет, виной всему таблицы кодировок.