Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2020-08-20 | 126 |
5.00
из
|
Заказать работу |
|
|
Commands of MS-DOS
Command |
Description
Работа с каталогами
dir диск:\путь
cd диск:\путь
md диск:\путь
rd диск:\путь
Работа с файлами
|
copy источник[+источник] результат
ren имя1 имя2
del диск:\путь
erase диск:\путь
move [/y | /-y] путь1 путь2
type диск:\путь
more диск:\путь
more < файл
файл|more
comp файл1 файл2
attrib [атрибуты] файл
|
Пакетные файлы
%n
goto метка
if [not] errorlevel число команда1 else команда2
if [not] строка1 = = строка2 команда1 else команда2
if [not] exist имя_файла команда1 else команда2
for %переменная in (набор) do команда
shift
rem текст
echo
choice (/c:список_символов) (/t:символ, число_секунд) сообщение
|
Работа с системой
command
ver
path [:диск:\путь]
set переменная=значение
files=n
device=имя_драйвера
install=имя_файла
dos=hight
buffers=n
cls
prompt текст
date
time
ctty имя_устройства
|
sys диск:
break
exit
Работа с диском
verify
Verify on
Verify off
vol диск:
label
format диск:
chkdisk [диск:][\путь]
diskcopy диск1: диск2:
diskcomp диск1: диск2:
Вывод
Вывод на консоль осуществляется с помощью команды echo. Например, "echo Здравствуй, читатель".
При использовании в командных файлы команды echo on и echo off позволяют включать и выключать режим вывода на экран самих исполняемых команд.
Если поставить перед командой знак @, то она на экране не будет выведена в любом случае. Будет видет только результат ее исполнения.
Например, "@echo no echo".
Команда "echo." позволяет вывести пустую строку.
Текущий каталог
Текущий каталог позволяет изменять команда cd.
Рекомендуется всегда использовать с командой опцию /d для смены одновременно и текущего диска.
Например, "cd /d d:\delta".
Текущий каталог можно узнать также с помощью псевдопеременной %cd%.
Например, "@echo Current directory is: %cd%".
При операциях с путями точка "." обозначает текущий каталог, а две точки ".." - каталог уровнем выше.
Например, команда "cd..\.." указывает, что нужно перейти двумя каталогами выше.
|
Параметры вызова сценариев
Из пакетного файла переданные параметры можно узнать с помощью переменных %1, %2, %3 и т.д. по порядку.
%0 расширяется до полного пути к данному командному файлу.
%* в пакетном файле обозначает все аргументы (например %1 %2 %3 %4 %5...).
Например, после вызова
d:\delta\lngs\compile_all.cmd sol.dpr.
будем иметь следующую картину:
Параметр | Значение |
%0 | d:\delta\lngs\compile_all.cmd |
%1 | sol.dpr |
%2 | . (точка) |
%3,%4,%5 и т.д. | (пусты) |
%* | sol.dpr. |
Современные ОС используют расширенный режим обработки параметров, в котором доступны следующие модификаторы:
Модификатор | Описание |
%~1 | расширение %1 и удаление любых кавычек ("") |
%~f1 | замена %1 полным путем |
%~d1 | замена %1 именем диска |
%~p1 | замена %1 путем без диска и имени файла |
%~n1 | замена %1 именем файла без расширения |
%~x1 | замена %1 расширением имени файла |
%~s1 | замена полным путем, содержащим только короткие имена |
%~a1 | замена %1 атрибутами файла |
%~t1 | замена %1 датой и временем модификации файла |
%~z1 | замена %1 размером файла |
%~$PATH:1 | Поиск в каталогах, перечисленных в переменной среды PATH, замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку. |
Описанные модификаторы можно применять в различных сочетаниях для всех параметров. Например:
Модификатор | Описание |
%~dp0 | полный путь (включая завершающий слэш) к каталогу выполняемого скрипта |
%~nx1 | имя файла первого параметра с расширением |
%~z2 | размер файла второго параметра |
%~ftza1 | замена %1 строкой, аналогичной результату работы программы dir |
См. также Использование пакетных параметров командной строки.
Проверка условий
Проверка условий осуществляется с помощью команды if.
Синтаксис:
if [not] строка1==строка2 команда [else выражение]
При обработке переменных важно учитывать возможность, что они окажутся пустыми. Поэтому, чтобы команда сравнения осталась корректной, операнды лучше заключать в кавычки: if "%1"=="input.txt".
Расширенный синтаксис:
if [/i] строка1 оператор_сравнения строка2 команда [else выражение]
Расширенный синтаксис позволяет использовать регистронезависимое (/i) сравнение со следующими операторами:EQU (равно), NEQ (не равно), LSS (меньше), LEQ (меньше или равно), GTR (больше), GEQ (больше или равно).
Проверка существования файла:
if [not] exist имя_файла команда [else выражение]
Например: if exist $result$.txt del $result$.txt
Проверка кода возврата:
if [not] errorlevel число команда [else выражение]
Условие верно, если предыдущая обработанная команда завершилась с кодом, равным или большим значения число.
Например:
@echo off
Использование меток
Метки обозначаются идентификатором с двоеточием прямо перед ним.
Для перехода по меткам используется команда 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%.
Exit /b 0
Потоки ввода/вывода
Потоки используются в командных сценариях для унифицированного распределения и перенаправления ввода/вывода.
В следующей таблице представлены стандартные потоки.
Поток | Номер дескриптора | Описание |
STDIN | 0 | Стандартный ввод (только чтение) |
STDOUT | 1 | Стандартный вывод (только запись) |
STDERR | 2 | Вывод ошибок (только запись) |
Каждый поток может быть связан с каким-либо устройством ввода/вывода.
В следующей таблице представлены стандартные устройства.
Устройство | Описание |
CON | Консоль (чтение с клавиатуры и вывод на экран) |
NUL | Пустота |
PRN | Принтер |
В качестве устройств могут также выступать файлы, заданные по имени.
По умолчанию все стандартные потоки связаны с устройством CON.
В следующей таблице описаны операторы перенаправления, применимые к потокам и устройствам.
Оператор перенаправления | Описание |
> | Перенаправление вывода с затиранием. |
< | Перенаправление ввода. |
>> | Перенаправление вывода с добавлением. |
>& | Считывает данные на выходе одного потока как входные данные для другого потока. |
<& | Считывает входные данные одного потока как выходные данные другого потока. |
| | Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием "канал". |
Некоторые команды, такие как find, sort, more, называются фильтрами, т.к. они занимаются специализированной трансформацией входного потока в выходной.
Далее приведены некоторые примеры.
Типичный вызов при тестировании программистских задач.
(Ввод из input.txt, вывод в output.txt, вывод ошибок в никуда).
solution.exe <input.txt >output.txt 2>nul
Вызов скрипта компиляции с перенаправлением потоков вывода и ошибок на дописывание в файл compile.log.
call compile_all.cmd %SOLUTION% %TARGET% >>compile.log 2>&1
Дописывание содержимого одного файла в конец другого.
more <report.txt >>$result$.txt
Поэкранный вывод списка элементов текущего каталога.
dir | more
Поэкранный вывод имен всех фидошников города Гомеля, отсортированных по алфавиту.
(for /f "usebackq tokens=5 delims=, " %%i in (`find /i "Gomel" R45Point`) do @echo %%i) | sort | more
Организация циклов
Команда for позволяет произвести запуск некоторой команды для каждого элемента из заданного множества.
Синтаксис:
for { % переменная | %% переменная } in ( множество ) do команда [ ПараметрыКоманднойСтроки ]
Параметры:
{ % переменная | %% переменная }
Обязательный параметр. Замещаемый параметр. Используйте % переменная для выполнения команды for из командной строки. В пакетных файлах для команды FOR используется запись %%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I).
( множество )
Обязательный параметр. Задает один или несколько файлов, каталогов, диапазон значений или текстовых строк, подлежащих обработке заданной командой. Скобки являются обязательными.
команда
Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога диапазона значений или текстовой строки, включенной в указанный параметр ( множество ).
ПараметрыКоманднойСтроки
Задает параметры командной строки, которые используются с указанной командой.
Подробнее команда описана в справке. Здесь приведены несколько примеров, иллюстрирующих ее возможности.
Перебор фиксированного множества параметров.
for %%i in (DirInfo,File_Id.diz,Descript.ion,Read.Me,ReadMe.*,FILES.BBS) do @set descr=%%i & @if exist %%i goto found
Goto notfound
:found
@echo В текущем каталоге доступно описание в файле %descr%
:notfound
Итерация по файлам.
@set sz=0
@for /r %temp% %%i in (*.*) do @set /a sz+=%%~zi & @echo %%i %%~zi
@echo Размер временного каталога: %sz%
Итерация по каталогам.
@echo off
echo Поддерживаемые компиляторы:
for /d %%i in (d:\delta\lngs\*) do @echo %%~ni
Численная итерация.
@for /l %%i in (1,1,5) do @echo %%i
@echo...вышел зайчик погулять.
Итерация и разбор файлов
Команда for может также употребляться для чтения строк из файлов и их синтаксического разбора.
В этом случае используется следующий синтаксис:
FOR /F ["options"] %переменная IN (набор) DO команда [параметры]
FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
или, если использован параметр usebackq:
FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters]
FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивки его на отдельные строки текста и выделения из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметр "options" служит для переопределения заданных по умолчанию правил обработки строк.
Возможные ключевые слова для этого параметра:
Ключевое слово | Описание |
eol=c | Задает символ конца строки (только один символ). |
skip=n | Задает число строк, пропускаемых в начале файла. |
delims=xxx | Задает набор разделителей. Заменяет набор разделителей по умолчанию, состоящий из пробела и символа табуляции. |
tokens=x,y,m-n | Задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. В результате размещаются дополнительные имена переменных. Форма m-n задает диапазон, указывающий элементы с m -го по n -ый. Если последним символом строки tokens = является звездочка (*), то размещается дополнительная переменная, в которую помещается остаток строки после разбора последнего элемента. |
usebackq | Задает возможность использования кавычек для имен файлов в параметре МножествоИменФайлов. Задает исполнение строки, заключенной в обратные кавычки, как команды, а строки в одиночных кавычках — как команды в символьной строке. |
Поясняющий пример:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
Эта команда обрабатывает файл myfile.txt, пропускает все строки, которые начинаются с символа точки с запятой, и передает вторую и третью подстроки из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i используется для второй подстроки, %j - для третьей, а %k получает все оставшиеся подстроки после третьей. Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки. Для того чтобы использовать двойные кавычки, необходимо использовать параметр usebackq, иначе двойные кавычки будут восприняты как границы строки для обработки.
Синтаксис команды FOR /F также позволяет обработать отдельную строку, с указанием параметра filenameset, заключенным в одиночные кавычки. Строка будет обработана как единая строка из входного файла.
Наконец, команда FOR /F позволяет обработать строку вывода другой команды. Для этого следует ввести строку вызова команды в апострофах вместо набора имен файлов в скобках. Строка передается для выполнения обработчику команд CMD.EXE, а вывод этой команды записывается в память и обрабатывается так, как будто строка вывода взята из файла. Например, следующая команда:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
выведет перечень имен всех переменных среды, определенных в настоящее время в системе.
Еще один пример:
@echo Разбор $result$.txt
for /f "usebackq delims=" %%i in ($result$.txt) do (@set val=%%i) & @goto next
:next
@set /a nval=val+0
if not "%val%"=="%nval%" (@echo Не число!) & @goto:eof
if %val% lss 0 (@echo Меньше нуля!) & @goto:eof
@echo Начислено %val% баллов.
Организация блокировок
Иногда бывает необходимо обеспечить, чтобы какой-либо скрипт мог выполняться только в единственном экземпляре. Для этого нужно, чтобы скрипт мог за одну элементарную операцию одновременно попытаться установить блокировку и узнать, удалось ли это. На роль такой операции подходит команда создания каталога md (mkdir). При таком подходе наличие блокировки определяется по факту существования определенного каталога, а успех выполнения команды md можно проверить по коду возврата (errorlevel).
Далее приведен иллюстрирующий пример.
@rem Устанавливаем блокировку на повторный запуск
set lockdir=%tmp%\some_lock
md %lockdir%
Установка цвета консоли
Команда color позволяет менять цвет консоли.
Например, "color 0A". Первый символ соответствует цвету фона, второй - текста.
0 = Черный 8 = Серый
1 = Синий 9 = Светло-синий
2 = Зеленый A = Светло-зеленый
3 = Голубой B = Светло-голубой
4 = Красный C = Светло-красный
5 = Лиловый D = Светло-лиловый
6 = Желтый E = Светло-желтый
7 = Белый F = Ярко-белый
Цвет создаваемой консоли позволяет менять также опция /t команды cmd.
(CopyLeft) Vadim Kopichenko
Commands of MS-DOS
Command |
Description
Работа с каталогами
dir диск:\путь
cd диск:\путь
md диск:\путь
rd диск:\путь
Работа с файлами
copy источник[+источник] результат
ren имя1 имя2
del диск:\путь
erase диск:\путь
move [/y | /-y] путь1 путь2
type диск:\путь
more диск:\путь
more < файл
файл|more
comp файл1 файл2
attrib [атрибуты] файл
Пакетные файлы
%n
goto метка
if [not] errorlevel число команда1 else команда2
if [not] строка1 = = строка2 команда1 else команда2
if [not] exist имя_файла команда1 else команда2
for %переменная in (набор) do команда
shift
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!