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

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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

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

2020-08-20 122
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%.


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

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

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



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

0.009 с.