Rem данный скрипт копирует все файлы во всех подкаталогах — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Rem данный скрипт копирует все файлы во всех подкаталогах

2020-08-20 118
Rem данный скрипт копирует все файлы во всех подкаталогах 0.00 из 5.00 0 оценок
Заказать работу

rem исходного каталога (%1) в другой каталог (%2)

xcopy %1 %2 /s /e

If errorlevel 4 echo Недостаточно памяти, задан недопустимый диск или ошибка в синтаксисе

if errorlevel 2 echo Нажата комбинация CTRL+C для остановки копирования

If errorlevel 0 echo Копирование прошло успешно

Использование меток

Метки обозначаются идентификатором с двоеточием прямо перед ним.
Для перехода по меткам используется команда goto.
Существует специальный вариант команды "goto:eof" для перехода на конец исполняемого сценария.

Есть также особый вариант команды call для повторного вызова текущего скрипта с заданной метки с определенными параметрами.

Пример:

@rem Такой вот тест:)

if %cd%\==%~dp0 goto next

@echo Внимание: текущий каталог не совпадает с путем к данному скрипту

:next

if not exist $result$.txt (@echo $result$.txt не найден) else call:modified $result$.txt

Goto:eof

:modified

@echo %1 был модифицирован %~t1

if /i ".txt" EQU "%~x1" @echo %1 является текстовым файлом

Goto:eof

Запуск команд

Запускать новые процессы из командной строки можно двумя способами.

Инструкция " cmd команда" запускает системный пакетный обработчик cmd.exe для выполнения команды команда.
Если вызов происходит из консоли, то используется имеющаяся, если нет — создается новая.
Ключи /c и /k указывают, что по завершении исполнения консоль нужно закрыть или оставить, соответственно.

Инструкция " start команда" запускает обработку команды команда в отдельном параллельном процессе.
Соответствующие ключи позволяют изменять приоритет запускаемого процесса.
Ключ /wait указывает, что запустившему процессу следует дождаться завершения запущенного.

Запускать новые командные сценарии из командных сценариев можно также двумя способами.
Первый:

@echo Эта строка выполнится перед запуском

call some_script.cmd some params

@echo Эта строка выполнится после завершения some_script.cmd

Второй:

@echo Эта строка выполнится перед запуском

some_script.cmd some params

@echo Эта строка никогда не выполнится, т.к. управление из some_script.cmd в вызвавший скрипт не вернется.

Код возврата команд

После выполнения любой потенциально сбойной команды код возврата, свидетельствующий о степени успешности ее завершения, сохраняется в специальной псевдопеременной %errorlevel%. Нулевое значение значит, что команда была выполнена успешно, положительные значения свидетельствуют об ошибке, чем больше значение, тем серьезнее проблема.
Значение кода возврата можно проверить с помощью специальной конструкции if [not] errorlevel число (см. if /?).
Также, переменную %errorlevel% можно свободно использовать непосредственно.
Например, "goto answer%errorlevel%" или "echo %errorlevel%".

Команда exit число прерывает исполнение текущего сценария с возвратом запустившему его процессу заданного кода выхода. По умолчанию производится прерывание сразу всей цепочки вызовов пакетных сценариев. Если необходимо завершить только текущий сценарий и возвратить управление в сценарий, вызвавший его командой call, то нужно использовать ключ /b команды exit. Для выхода из сценария с передачей вызвавшему процессу текущего значения %errorlevel% необходимо использовать команду goto:eof.

Некоторые команды всегда устанавливают переменную %errorlevel%, некоторые модифицируют ее только при возникновении ошибок, а некоторые вообще ее никогда не меняют.
Вот пример:

Md testdir

@echo %errorlevel%=0, успешно

Rd testdir

@echo %errorlevel%=0, успешно

Тест

@echo %errorlevel%=9009, недопустимая команда

Md testdir

@echo %errorlevel%=0, успешно

Md testdir

@echo %errorlevel%=1, каталог уже существует

Rd testdir

@echo %errorlevel%=1, успешно, но сохранился код предыдущей ошибки

set errorlevel=0

@echo %errorlevel%=0, после явного сброса

Rd con

@echo %errorlevel%=1, недопустимое имя, но оказывается, что rd errorlevel вообще никогда не меняет

@goto:eof

Копирование

Команда copy умеет копировать и склеивать файлы.
Команда xcopy умеет копировать файлы и каталоги.
Команда ren (rename) умеет переименовывать файлы и каталоги.

Проверить, удачно ли выполнилась команда можно по коду возврата %errorlevel%.


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.