Вывод, задание и удаление переменных среды cmd.exe.
SET [переменная=[строка]]
переменная
Имя переменной среды.
строка
Строка символов, присваиваемая указанной переменной.
Введите SET без параметров для вывода текущих переменных среды.
Изменение команды SET при включении расширенной обработки команд:
Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки. Например:
SET P
Эта команда выведет значения всех переменных, имена которых начинаются с "P ".
Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.
Команда SET не допускает использование знака равенства в имени
переменной среды.
Команда SET поддерживает два дополнительных ключа:
SET /A
выражение
SET /P
variable=
Ключ /A
указывает, что строка справа от знака равенства является числовым
выражением, значение которого вычисляется. Обработчик выражений очень
прост и поддерживает следующие операции, перечисленные в порядке убывания
приоритета:
При использовании любых логических или двоичных операторов необходимо
заключить строку выражения в кавычки. Любые нечисловые строки в выражении
рассматриваются как имена переменных среды, значения которых преобразуются
в числовой вид перед использованием. Если переменная с указанным именем
не определена в системе, вместо нее подставляется нулевое значение. Это
позволяет выполнять арифметические операции со значениями переменных среды,
причем не нужно вводить знаки % для получения значений. Если команда
SET /A вызывается из командной строки, а не из пакетного файла, она выводит
окончательное значение выражения. Слева от любого оператора присваивания
должно стоять имя переменной среды. Числовые значения рассматриваются как
десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел,
и 0 для восьмеричных чисел. Например, числа 0x12,
и 022 обозначают десятичное число 18. Обратите внимание на запись
восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в
восьмеричной системе исчисления цифры 8 и 9 не используются.
Ключ /P
позволяет установить значение переменной для входной строки, введенной
пользователем. Показывает указанное приглашение promptString
перед чтением
введенной строки. Приглашение promptString
может быть пустым.
Подстановка переменной среды может быть расширена следующим образом:
%PATH:str1=str2%
расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".
Можно также использовать строки расширения.
%PATH:~10,5%
расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.
%PATH:~-10%
извлечет последние 10 символов переменной PATH.
%PATH:~0,-2%
извлечет все символы переменной PATH, за исключением 2-х последних.
Наконец, добавлена поддержка связывания времени выполнения для переменных среды
окружения.
По умолчанию эта поддержка отключена. Ключ /V
командной строки
CMD.EXE
позволяет включать и выключать ее. Для вызова справки, наберите CMD /?
Связывание времени выполнения для переменных среды окружения полезно при обходе
ограничений раннего связывания, которое происходит при первом чтении текстовой
строки, а не при ее выполнении. Следующий пример демонстрирует возникающую
проблему при использовании раннего связывания переменных:
set
VAR=before
if "%VAR%
" == "before" (
set
VAR=after
if "%VAR%"
== "after" @echo
Тело внутреннего оператора сравнения
)
Данное сообщение не будет выводиться, т.к. %VAR%
в ОБОИХ выражениях IF
подставляется в момент первого использования в первом IF, в том числе и в тело
первого ветвления IF, которое является составным выражением. В IF внутри
составного выражения в действительности сравниваются значения "before" и
"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:
set
LIST=
for %i in (*) do set
LIST=%LIST%
%i
echo
%LIST%
в данном случае список файлов текущей папки никогда не будет построен. Вместо
этого, значением переменной LIST будет имя последнего найденного файла.
И вновь, это случилось потому, что %LIST%
подставляется всего один раз -
в момент обработки выражения FOR, когда список еще пуст.
Фактически, приведенный фрагмент эквивалентен следующему примеру:
for %i in (*) do set LIST=%i
в котором имя последнего найденного файла сохраняется в переменной LIST.
Связывание времени выполнения для переменных среды окружения происходит при
использовании специального символа (восклицательного знака), обозначающего
проведение сопоставления во время выполнения. Если включена поддержка связывания
времени выполнения, то для достижения ожидаемых результатов приведенные выше
фрагменты должны быть изменены следующим образом:
set
VAR=before
if "%VAR%
" == "before" (
set
VAR=after
if "!VAR!
" == "after" @echo
Тело внутреннего оператора сравнения
)
set
LIST=
for %i in (*) do set
LIST=!LIST!
%i
echo
%LIST%
При включенной расширенной обработке команд доступны несколько переменных
среды, которые не отображаются в списке, отображаемом при вызове команды SET.
Значения этих переменных вычисляются динамически каждый раз при их извлечении.
Если пользователь явно задает переменные с одним из этих имен,
то это определение перекрывает соответствующее динамическое определение,
описанное ниже:
%CD% - раскрывается в строку текущей директории.
%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.
%TIME% - раскрывается в текущую дату, используя формат команды TIME.
%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.
%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL
%CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд.
%CMDCMDLINE%
- раскрывается в исходную командную строку, которая вызвала
командный процессор.
Переменные среды, выставленные в моей Windows XP, которая уже 2 года живет без переустановки:
%ALLUSERSPROFILE%
= C:\Documents and Settings\All Users
%CommonProgramFiles%
= C:\Program Files\Common Files
%COMPUTERNAME%
= "Имя компьютера"
%ComSpec%
= C:\WINDOWS\system32\cmd.exe
%CYGWIN%
= tty
%FP_NO_HOST_CHECK%
= NO
%NUMBER_OF_PROCESSORS%
= 2
%OS%
= Windows_NT
%Path%
= C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOW S\System32\Wbem
%PATHEXT%
= .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.W SF;.WSH
%PROCESSOR_ARCHITECTURE%
= x86
%PROCESSOR_IDENTIFIER%
= x86 Family 6 Model 15 Stepping 2, GenuineIntel
%PROCESSOR_LEVEL%
= 6
%PROCESSOR_REVISION%
= 0f02
%ProgramFiles%
= C:\Program Files
%PROMPT%
= $P$G
%SystemDrive%
= C:
%SystemRoot%
= C:\WINDOWS
%TEMP%
= C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp
%TMP%
= C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp
%USERDOMAIN%
= "Имя компьютера"
%USERNAME%
= "Имя пользователя"
%USERPROFILE%
= C:\Documents and Settings\"Имя пользователя"
%windir%
= C:\WINDOWS
Командная строка или как её ещё называют cmd в операционной системе Windows 8 такая же как и в младших версиях Windows7, Windows Vista, Windows хр, отсюда следует что одни и те же команды одинаково работают во всех версиях.
Итак давайте для начала разберёмся как нам запустить командную строку. Для этого у вас должен быть работающий компьютер с операционной системой.
Некоторым командам если вы работаете через учётную запись обычного пользователя для выполнения бывает недостаточно прав в целях безопасности, поэтому всегда запускайте командную строку с правами администратора. Существует 2 способа запуска командной строки:
В появившемся окошке пишем cmd,нажимаем Ок.
Запустится окно командной строки с чёрным фоном.
2) Более быстрый способ: через горячие клавиши Win+R,здесь также в появившемся окошке пишем cmd,нажимаем ок.
В windows 8 вы можете воспользоваться только 2 способом, так как там нет меню Пуск. Напишем нашу первую команду help которая выведет список всех доступных команд с краткими пояснениями.
Список всех существующих команд командной строки Windows:
ASSOC
Печать на экран или модификация сопоставлений по расширениям имен файлов.
ATTRIB
Просмотр и модификация свойств файлов.
BREAK
Блокирует или разблокировывает расширенную обработку CTRL+C в системе DOS.
BCDEDIT
Устанавливает свойства в базе данных загрузки, которая позволяет управлять начальной загрузкой.
CACLS
Выводит данные и изменяет списки управления доступом (ACL) к файлам.
CALL
Вызывает один пакетный файла из другого, а также может передавать входные аргументы.
CD
CHCP
Вывод или задание кодировки.
CHDIR
Выводит название или перемещает к другой папке.
CHKDSK
Диагностика накопителя на ошибки.
CHKNTFS
Показывает или изменяет диагностику накопителя во время загрузки.
CLSО
чистка дисплея от всех символов.
CMD
Запускает программу командной строки Windows. На одном компьютере их можно запустить бесконечное количество. Они будут работать независимо друг от друга.
COLOR
Изменяет и устанавливает основной фон окна и самих шрифтов.
COMP
Показывает различия и сравнивает содержимое двух файлов.
COMPACT
Изменяет и показывает сжатие файлов в NTFS.
CONVERT
Изменяет дисковые тома FAT в NTFS. Текущий диск изменить не удастся.
COPY
Создаёт копию файла или файлов и помещает их в указанное место.
DATE
Показывает или устанавливает текущую дату.
DEL
Уничтожает один или несколько файлов сразу.
DIR
Показывает имена файлов и папок с их датой создания,находящихся в текущей или указанной в параметрах папки.
DISKCOMP
Сравнивает и показывает различия 2 гибких накопителей.
DISKCOPY
Создаёт копию содержимого одного гибкого накопителя на другой.
DISKPART
Показывает и изменяет свойств раздела диска.
DOSKEY
Изменяет и повторно вызывает командные строки; создаёт макросы.
DRIVERQUERY
Отображает сведения о «положении дел» и атрибутах драйвера устройства.
ECHO
Выводит текстовую информацию и меняет режим отображения команд на экране.
ENDLOCAL
Подводит к концу локализацию среды для пакетного файла.
ERASE
Уничтожает файл или файлы.
EXIT
Прекращает работу программы командной строки
FC
Показывает различия двух файлов или двух наборов файлов а также сравнивает их
FIND
Осуществляет поиск текстовой строки в файлах либо в одном файле.
FINDSTR
Расширенный поиск текстовых строк в файлах.
FOR
Цикл. Повторяет выполнение одной и той же команды указанное количество раз
FORMAT
Форматирование накопителя для работы с Windows.
FSUTIL
Показывает и устанавливает атрибуты файловой системы.
FTYPE
Даёт возможность изменить и просмотреть типы файлов, которые в основном применяются при сопоставлении по расширениям имен файлов.
GOTO
Передаёт управление к другой указанной команде.
GPRESULT
Выводит сведения о групповой политике для компьютера или пользователя.
GRAFTABL
Даёт возможность Windows показывать расширенный набор символов в графическом режиме.
HELP
Выводит все данные о существующих командах Windows.
ICACLS
Показывает, модифицирует, архивирует либо восстанавливает списки ACL для файлов и папок.
IF
Выполняет команды по заданному условию.
LABEL
Создаёт, модифицирует и уничтожает метки тома для накопителей.
MD
Создаёт пустой каталог.
MKDIR
Создаёт пустой каталог.
MKLINK
Cоздаёт символические и жесткие ссылки
MODE
Настраивает системные устройства.
MORE
Последовательно выводит информацию по блокам размером в один экран.
MOVE
Перемещает файлы из одного места в другое.
OPENFILES
Показывает файлы, которые открыты на общей папке удаленным юзером.
PATH
Выводит или задаёт полный путь к исполняемым файлам.
PAUSE
Прекращает выполнение команд командной строки и выводит информирующий текст.
POPD
Восстанавливает предыдущее значение активной папки, которое было сохранено посредством команды PUSHD.
PRINT
Выводит на печать содержимое текстового файла.
PROMPT
Модифицирует приглашение в командной строке Windows.
PUSHD
Сохраняет значение активной папки и переходит к другой папке.
RD
Уничтожает каталог.
RECOVER
Возрождает данные, способные читаться, с плохого или поврежденного винчестера.
REM
Помещает комментарии в пакетные файлы и файл CONFIG.SYS.
REN
Меняет название как файлов так и папок.
RENAME
Аналогичен команде
REN.
REPLACE
Меняет файлы местами.
RMDIR
Уничтожает каталог.
ROBOCOPY
Продвинутый инструмент для копирования файлов и целых папок
SET
Показывает, устанавливает и уничтожает переменные среды Windows.
SETLOCAL
Производит локализацию изменений среды в пакетном файле.
SC
Даёт возможность работать со службами
SCHTASKS
Позволяет запускать любые программы и последовательно выполнять нужные команды по заданному плану
SHIFT
Меняет позицию (сдвиг) подставляемых параметров для пакетного файла.
SHUTDOWN
Завершает работу компьютера.
SORT
Сортирует ввод по заданным параметрам.
START
Запускает программу или команду в новом окне.
SUBST
Назначение заданному пути имени накопителя.
SYSTEMINFO
Выводит данные об операционной системе и конфигурации компьютера.
TASKLIST
Показывает список всех запущенных процессов с их идентификаторами.
TASKKILL
“Убивает” или останавливает процесс.
TIME
Устанавливает и выводит системное время.
TITLE
Задаёт название окну для текущего сеанса интерпретатора командных строк CMD.EXE
TREE
Выводит директории накопителя в удобном наглядном виде.
TYPE
Выводит содержимое текстовых файлов.
VER
Выводит краткие сведения о версии Windows.
VERIFY
Проверяет на ошибки записи файла на накопителе.
VOL
Выводит на дисплей метки и серийный номер тома накопителя.
XCOPY
Создаёт копию файлов.
WMIC
Выводит WMI в командной строке.
Местонахождение: Windows\system32
Описание: Windows Command Processor
В Windows XP имеется так называемая консоль - программа Cmd.exe , которая является командным интерпретатором. При простом запуске, без указания параметров командной строки, консоль отображает версию операционной системы, информацию о защите авторских прав разработчиков ОС и саму командную строку, в которой можно ввести как параметр командной строки самой программы Cmd.exe , так и любую внешнюю команду, например, команду на запуск другого приложения или стандартную команду, типа mkdir , del и т. п.
Параметры командной строки
Синтаксис для командной строки:
CMD [ команда]
Можно использовать одновременно несколько команд, используя между ними специальный разделитель - символы &&, при этом все сочетание нескольких команд должно быть заключено в кавычки, например, "команда&&команда&& команда ".
/? - вызов справки
/A - вывод результатов выполнения заданной команды в формате ANSI
/C - выполнение заданной команды с последующим закрытием окна консоли
/D - отключение выполнения команд AutoRun (которые первыми автоматически выполняются при вызове cmd.exe), заданных в специальных разделах реестра HKEY_LOCAL_MACHINE \Software\Microsoft\Command Processor\AutoRun и HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
/E:ON (/E:OFF) - разрешение (запрет) расширений команд. В Windows XP по умолчанию включена расширенная обработка всех команд cmd.exe, этот параметр служит для включения / выключения расширений конкретного процесса. Расширенная обработка включает следующие команды: assoc, call, chdir (cd), color, del (erase), endlocal, for, ftype, goto, if, mkdir (md), popd, prompt, pushd, set, setlocal, shift, start (изменен также вызов внешних команд)
/F:ON (/F:OFF) - разрешение (запрет) завершения имен файлов и папок (по умолчанию выключено) конкретного вызова cmd.exe. Довольно удобная функция, позволяющая не вводить полностью вручную в окне консоли пути к файлам или имена самих папок, а ввести только часть длинного пути и с помощью нажатия специальной комбинации клавиш дать операционной системе найти подходящие варианты и просто выбрать нужный. (Если необходимо включить или отключить завершение имен для всех вызовов cmd.exe, то смотри Автонабор команд ).
Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /F командного процессора имеет приоритет над параметрами реестра. Microsoft вносит некоторые разъяснения по поводу использования этой функции: "Если завершение включено с помощью ключа командной строки / F:ON, то используются два управляющих символа: Ctrl+D для имен папок и Ctrl+F для имен файлов.
Чтобы отключить конкретный символ завершения в системном реестре, в качестве кода специального символа используется шестнадцатеричное значение символа пробела (0 x 20). Завершение вызывается при вводе одного из этих двух специальных символов. Функция завершения берет строку пути слева от точки ввода, дописывает к ней символ шаблона, если таковой отсутствует, а затем строит список путей, которые соответствуют полученному определению.
После этого выводится первый элемент этого списка соответствующих путей. Если же список пуст, то подается звуковой сигнал, и ничего не выводится. После этого повторный ввод того же самого специального символа приводит к циклическому перебору всех соответствующих путей.
Нажатие клавиши Shift при вводе управляющего символа позволяет просматривать список путей в обратном порядке. Если изменить выведенный путь, а затем снова ввести управляющий символ, сохраненный список очищается, и строится новый список путей. То же самое происходит, если переключиться с одного символа завершения на другой.
Единственное отличие при использовании символа завершения файла состоит в том, что при этом для построения списка соответствия берется и путь, и имя файла, а при использовании символа завершения папки - только путь. Если символ завершения используется в одной из встроенных команд манипулирования папками (CD, MD или RD), то всегда подразумевается символ завершения папок. Символ завершения правильно работает и с именами файлов, содержащими пробелы или иные специальные символы, если при этом строка соответствия заключена в кавычки.
Кроме того, если сместить точку ввода влево, а затем использовать символ завершения внутри строки, оставшийся справа от точки ввода текст будет отброшен. Специальные символы, которые требуют обязательного заключения в кавычки: <пробел>&(){}^=;!"+,~". Все понятно?
/K - выполнение заданной команды без последующего завершения (окно консоли не закроется)
/Q - отключение вывода команд на экран (ECHO OFF). /R - аналогичен параметру /C
/S - изменение поведения команды после /C или /K
/T: цвет - задание цвета текста и фона окна консоли. Параметр цвет имеет значение в виде двух шестнадцатеричных чисел: первое определяет цвет фона окна, а второе - текста в окне. То есть результатом выполнения команды "CMD /T:7С" будут светло-красные буквы на белом фоне.
/U - вывод результатов выполнения команды в формате Unicode
/V:ON (/V:OFF) - разрешение (запрет) отложенного расширения переменных среды (для конкретного вызова cmd.exe) с применением восклицательного знака "!" в качестве разделителя. Например, /V:ON разрешает использовать!var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит совсем к другим результатам внутри цикла FOR. При включенном отложенном расширении переменных среды символ "!" (восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения; /X - означает то же, что и ключ /E:ON, из соображений совместимости; /Y то же, что и /E:OFF. И еще несколько замечаний.
Если указаны ключи /C или /K, то остальная часть командной строки после такого ключа обрабатывается как командная строка, а обработка символов кавычек (") ведется таким образом. Символы кавычек в командной строке сохраняются, если выполняются все перечисленные ниже условия: ключ /S отсутствует; есть ровно два символа кавычек; между ними нет других специальных символов, как то: &<>()@^|; между ними имеются один или несколько пробелов; строка, заключенная в кавычки, является именем исполняемого файла. В противном случае проверяется первый символ, и если он является символом кавычек, то он удаляется, также удаляется последний символ кавычек в командной строке, а весь текст после этого последнего символа кавычек сохраняется.
Таблица для задания цвета текста и фона окна консоли:
0 - черный; 1 - синий; 2 - зеленый; 3 - голубой; 4 - красный; 5 - лиловый; 6 - желтый; 7 - белый; 8 - серый; 9 - светло-синий; A - светло-зеленый; B - светло-голубой; C - светло-красный; D - светло-лиловый; E - светло-желтый; F - ярко-белый.
Кстати, цвет и другие настройки можно изменять и другим способом. Щелкните правой кнопкой мыши по строке заголовка окна и выберите пункт Свойства. Откроется окно с четырьмя вкладками, на которых будут доступны опции изменения настроек программы. Если вам не нравится стандартный черный экран командной строки, то на вкладке Color вам предлагается выбрать цвет экрана и текста либо из 16 стандартных цветов, для которых имеется соответствующие образцы, либо задав числовое значение цвета в формате RGB. На вкладке Layout настраивается размер окна и экранного буфера. Если в ранних ОС MS-DOS и Windows размер экрана оставался неизменным 25 строк в высоту и 80 символов в длину, и для вывода большего количества строк приходилось добавлять команду |more, то в системах NT и более поздних можно просто задать достаточно большой размер буфера экрана и пользоваться полосой прокрутки, что гораздо удобнее.
Текст в окне командной строки Для копирования и вставки текста в окно командной строки обычные для Windows комбинации клавиш, такие как Ctrl+C , Ctrl+V , работать не будут. Для извлечения текста из буфера обмена вам придется вызвать меню, щелкнув правой кнопкой мыши по заголовку окна, и выбрать подменю Edit. Или же просто щелкните правой кнопкой по окну. Для копирования текста из окна выберите пункт Mark и мышью выделите нужный текст. Затем либо нажмите Enter, либо в том же меню выберите Copy. Если надо вставить какой-то текст в окно командной строки, обратитесь к команде Paste. Для повторного выполнения команды воспользуйтесь стрелками <<вверх>> и <<вниз >>, позволяющими перемещаться по списку выполненных команд. Для очистки экрана от текста служит директива cls.
TITLE - для изменения заголовка строки
TITLE [строка] , где строка - это будущий заголовок окна командной строки (записывается без кавычек). После задания заголовка окна он может быть изменен только повторным вызовом команды TITLE. Использование данной команды может быть полезно в командных файлах.
Так, выполнение примера, который приведен ниже, будет сопровождаться появлением соответствующей надписи в заголовке окна:
TITLE Копируются файлы...
COPY \\Server\Share\*.doc C:\User\Common\*.doc
ECHO Копирование закончено.
TITLE Процесс завершен
Команда АТ - С помощью этой команды можно запускать команды и программы в определенное время.
AT [\\имя компьютера] [ | /DELETE ]
AT [\\имя компьютера] time [ /EVERY:дата[,...] | /NEXT:дата [,...]] "команда"
\\ имя компьютера указывает на удаленный компьютер, на котором могут быть запущены планируемые задачи. Если этот параметр не указан, то по умолчанию предполагается тот компьютер, на котором запускается команда АТ;
id идентификатор, назначенный указанной команде;
/delete отменяет намеченную команду. Если id опущен, все назначенные команды на компьютере отменены;
/yes этот параметр в случае использования с предыдущим параметром (/delete) автоматически включает подтверждение для всех запросов;
time время выполнения команды (в 24-часовом формате часы:минуты);
/interactive позволяет команде AT обмениваться с подключенными на данный момент в системе пользователями;
/every:дата[,...] выполняет команду в каждый указанный день (дни) недели или месяц. Если дата опущена, подразумевается текущий день месяца;
/next:дата[...] выполняет указанную команду при следующем наступлении указанной даты (например, в следующий четверг). Если дата не указанна, по умолчанию принимается текущий день месяца;
"команда" указывается команда Windows NT или пакетная программа, которая будет выполнена. Имя файла должно указываться полностью. При этом, если выполняется какая-либо из внутренних команд, например, COPY или DIR, а не исполняемый файл, то необходим запуск командного интерпретатора с ключом / С, например:
AT 10:00 "CMD /C DIR > C:\test.out.
Команда For - Ее возможности обширны, но мы ограничимся демонстрацией лишь одной из них - Копирование по сети на все машины сразу. Допустим, что требуется скопировать файл на двадцать машин. Делается это очень быстро. Сначала в файл list.txt записываем список всех имеющихся в сети машин. В консоли пишем:
net view > c:\list.txt
Затем, чтобы выполнить, например, копирование файла patch.exe на каждую машину из списка, даем команду:
FOR /F "tokens=1" %i in (с:\list.txt) do copy d:\temp\patch.exe "%i\C$\program files\ICQ"
Переменная %i будет автоматически принимать значение NetBIOS-имени машины из новой строки файла list.txt и на эту машину будет производиться копирование.
Изменение вида приглашения командной строки
cmstp.exe
Местонахождение: WINDOWS\system32
Описание: Microsoft Connection Manager Profile Installer
Установка или удаление профиля службы диспетчера подключений. Выполненная без параметров команда cmstp устанавливает профиль службы со стандартными параметрами, соответствующими данной операционной системе и разрешениям пользователя.
comp.exe
Местонахождение: WINDOWS\system32
Описание: File Compare Utility
Побайтное сравнение двух или нескольких файлов. Команда comp позволяет сравнивать файлы, находящиеся на разных дисках и в разных каталогах. При сравнении файлов с помощью команды comp выводятся их имена и расположения. Выполненная без параметров команда comp запрашивает файлы для сравнения.
Описание программы есть в Справке Windows
Синтаксис:
comp [файл1 ] [файл2 ] [/d ] [/a ] [/l ] [/n= кол_строк ] [/c ]
Чтобы сравнить содержимое каталога C:\Reports с содержимым каталога резервных копий \\Sales\Backup\April , введите следующую команду:
comp c:\reports \\sales\backup\april
Чтобы сравнить первые десять строк файлов в каталоге \Invoice и вывести результат в десятичном формате, введите следующую команду:
comp \invoice\*.txt \invoice\backup\*.txt /n=10 /d
compact.exe
Местонахождение: WINDOWS\system32
Описание: Программа сжатия файлов - File Compress Utility
Вывод сведений или изменение уплотнения файлов и каталогов в разделах NTFS. Запущенная без параметров команда compact выводит сведения об уплотнении файлов в текущем каталоге.
Описание программы есть в Справке Windows
Синтаксис:
compact [{/c|/u}] ] [имя_файла[...]]
control.exe
Местонахождение: Windows\system32
Описание: Панель управления Windows - Windows Control Panel
Данная команда служит для запуска апплетов Панели управления
Советы: Как автоматихировать вход в систему
Реестр: Запрет за запуск Панели управления и ее апплетов
convert.exe
Местонахождение: Windows\system32
Описание: File System Conversion Utility
Утилита командной строки служит для преобразования томов с файловой системой FAT и FAT32 в тома с файловой системой NTFS.
Синтаксис:
convert [том] /fs:ntfs
cscript.exe
Местонахождение: Windows\system32
Описание: Microsoft (r) Console Based Script Host
Сервер сценариев cscript.exe является консольным вариантом, предназначенный для взаимодействия с пользователем через командную строку (в отличии от GUI-приложения wscript.exe).
Синтаксис:
cscript [имя_сценария] [параметры_сервера] [аргументы_сценария]
Описание параметров есть в справке Windows
cacls.exe
Местонахождение: Windows\system32
Описание: Изменение таблиц управления доступом - Control ACLs Program
Программа служит для просмотра или изменения файлов избирательных таблиц управления доступом (DACL).
Описание программы есть в справке Windows
Вывод, задание и удаление переменных среды cmd.exe.
SET [переменная=[строка]]
переменная Имя переменной среды.
строка Строка символов, присваиваемая указанной переменной.
Введите SET без параметров для вывода текущих переменных среды.
Изменение команды SET при включении расширенной обработки команд:
Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки. Например:
Эта команда выведет значения всех переменных, имена которых начинаются с "P".
Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.
Команда SET не допускает использование знака равенства в имени
переменной среды.
Команда SET поддерживает два дополнительных ключа:
SET /A выражение
SET /P variable=
Ключ /A указывает, что строка справа от знака равенства является числовым
выражением, значение которого вычисляется. Обработчик выражений очень
прост и поддерживает следующие операции, перечисленные в порядке убывания
приоритета:
() - группировка
! ~ - - унарные операторы
* / % - арифметические операторы
Арифметические операторы
<< >> - двоичный сдвиг
& - двоичное И
^ - двоичное исключающее ИЛИ
| - двоичное ИЛИ
= *= /= %= += -= - присвоение
&= ^= |= <<= >>=
Разделитель операторов
При использовании любых логических или двоичных операторов необходимо
заключить строку выражения в кавычки. Любые нечисловые строки в выражении
рассматриваются как имена переменных среды, значения которых преобразуются
в числовой вид перед использованием. Если переменная с указанным именем
не определена в системе, вместо нее подставляется нулевое значение. Это
позволяет выполнять арифметические операции со значениями переменных среды,
причем не нужно вводить знаки % для получения значений. Если команда
SET /A вызывается из командной строки, а не из пакетного файла, она выводит
окончательное значение выражения. Слева от любого оператора присваивания
должно стоять имя переменной среды. Числовые значения рассматриваются как
десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел,
и 0 для восьмеричных чисел. Например, числа 0x12,
и 022 обозначают десятичное число 18. Обратите внимание на запись
восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в
восьмеричной системе исчисления цифры 8 и 9 не используются.
Ключ /P позволяет установить значение переменной для входной строки, введенной
пользователем. Показывает указанное приглашение promptString перед чтением
введенной строки. Приглашение promptString может быть пустым.
Подстановка переменной среды может быть расширена следующим образом:
%PATH:str1=str2%
расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".
Можно также использовать строки расширения.
расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.
извлечет последние 10 символов переменной PATH.
извлечет все символы переменной PATH, за исключением 2-х последних.
Наконец, добавлена поддержка связывания времени выполнения для переменных среды
окружения. По умолчанию эта поддержка отключена. Ключ /V командной строки
CMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /?
Связывание времени выполнения для переменных среды окружения полезно при обходе
ограничений раннего связывания, которое происходит при первом чтении текстовой
строки, а не при ее выполнении. Следующий пример демонстрирует возникающую
проблему при использовании раннего связывания переменных:
set VAR=before
If "%VAR%" == "before" (
if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения
Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях IF
подставляется в момент первого использования в первом IF, в том числе и в тело
первого ветвления IF, которое является составным выражением. В IF внутри
составного выражения в действительности сравниваются значения "before" и
"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:
set LIST=
For %i in (*) do set LIST=%LIST% %i
в данном случае список файлов текущей папки никогда не будет построен. Вместо
этого, значением переменной LIST будет имя последнего найденного файла.
И вновь, это случилось потому, что %LIST% подставляется всего один раз -
в момент обработки выражения FOR, когда список еще пуст.
Фактически, приведенный фрагмент эквивалентен следующему примеру:
for %i in (*) do set LIST= %i
в котором имя последнего найденного файла сохраняется в переменной LIST.
Связывание времени выполнения для переменных среды окружения происходит при
использовании специального символа (восклицательного знака), обозначающего
проведение сопоставления во время выполнения. Если включена поддержка связывания
времени выполнения, то для достижения ожидаемых результатов приведенные выше
фрагменты должны быть изменены следующим образом:
set VAR=before
If "%VAR%" == "before" (
Set VAR=after
If "!VAR!" == "after" @echo Тело внутреннего оператора сравнения
Set LIST=
For %i in (*) do set LIST=!LIST! %i
При включенной расширенной обработке команд доступны несколько переменных
среды, которые не отображаются в списке, отображаемом при вызове команды SET.
Значения этих переменных вычисляются динамически каждый раз при их извлечении.
Если пользователь явно задает переменные с одним из этих имен,
то это определение перекрывает соответствующее динамическое определение,
описанное ниже:
%CD% - раскрывается в строку текущей директории.
%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.
%TIME% - раскрывается в текущую дату, используя формат команды TIME.
%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.
%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL
%CMDEXTVERSION% - раскрывается в текущее значение версии
расширенной обработки команд.
%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала
командный процессор.
В Windows XP командный интерпретатор cmd.exe при простом запуске, без указания параметров командной строки, отображает версию операционной системы, информацию о защите авторских прав разработчиков ОС и, собственно, саму командную строку, в которой можно ввести как параметр командной строки самой программы cmd.exe, так и любую внешнюю команду, например, команду на запуск другого приложения или стандартную команду, типа mkdir, del и т. п. В случае указания параметров командной строки вы, естественно, получаете некоторые дополнительные возможности. Синтаксис в данном случае таков:
CMD [ команда]
Здесь команда, собственно, и задает исполняемую команду или программу. Можно использовать одновременно и несколько команд, используя между ними специальный разделитель — символы &&, при этом все сочетание нескольких команд должно быть заключено в кавычки, например, "команда&&команда&&команда".
Теперь почти в соответствии с официальной документацией Microsoft (я взял на себя смелость ее подредактировать, сделав немного более понятной для народа, если это в данном случае вообще возможно) попробую расшифровать значение каждого параметра:
/?
Вызов справки (очень подробная, на основе ее, собственно, и написана эта статья).
/A
Вывод результатов выполнения заданной команды в формате ANSI.
/C
Выполнение заданной команды с последующим завершением (то есть закроется окно консоли).
/D
Отключение выполнения команд AutoRun (которые первыми автоматически выполняются при вызове cmd.exe), заданных в специальных разделах реестра (в этом разделе задаются параметры, типа REG_SZ) и (в этом разделе задаются параметры, типа REG_EXPAND_SZ).
/E:ON (/E:OFF)
Разрешение (запрет) расширений команд. В Windows XP по умолчанию включена расширенная обработка всех команд cmd.exe, этот параметр служит для включения / выключения расширений конкретного процесса.
Полностью отключить или включить расширенную обработку на данном компьютере или для конкретного пользователя можно в реестре, в соответствующих нужному контексту разделах и .
Параметр "EnableExtensions"=dword:00000001 в этих разделах включает расширения, а "EnableExtensions"=dword:00000000 — отключает, при этом параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /E командного процессора имеет приоритет над параметрами реестра.
При расширенной обработке команд изменения и / или добавления затрагивают следующие команды: assoc, call, chdir (cd), color, del (erase), endlocal, for, ftype, goto, if, mkdir (md), popd, prompt, pushd, set, setlocal, shift, start (изменен также вызов внешних команд); /F:ON (/F:OFF) — разрешение (запрет) завершения имен файлов и папок (по умолчанию выключено) конкретного вызова cmd.exe. Довольно удобная функция, позволяющая не вводить полностью вручную в окне консоли пути к файлам или имена самих папок, а ввести только часть длинного пути и с помощью нажатия специальной комбинации клавиш дать операционной системе найти подходящие варианты и просто выбрать нужный.
Если необходимо включить или отключить завершение имен для всех вызовов cmd.exe, то в разделах реестра (для локальной машины), (для текущего пользователя) установите следующие параметры (приведены значения по умолчанию):
"CompletionChar"=dword:00000040
"PathCompletionChar"=dword:00000040
таким образом, чтобы их шестнадцатеричные значения соответствовали коду управляющего символа, используемого для конкретной функции (например, 0 x 4 для Ctrl+D или 0 x 6 для Ctrl+F). Это позволяет сделать известная утилита, неоднократно упоминавшаяся и описанная в нашем журнале, TweakUI.
Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /F командного процессора имеет приоритет над параметрами реестра.
Microsoft вносит некоторые разъяснения по поводу использования этой функции: "Если завершение включено с помощью ключа командной строки /F:ON, то используются два управляющих символа: Ctrl+D для имен папок и Ctrl+F для имен файлов. Чтобы отключить конкретный символ завершения в системном реестре, в качестве кода специального символа используется шестнадцатеричное значение символа пробела (0 x 20). Завершение вызывается при вводе одного из этих двух специальных символов.
Функция завершения берет строку пути слева от точки ввода, дописывает к ней символ шаблона, если таковой отсутствует, а затем строит список путей, которые соответствуют полученному определению. После этого выводится первый элемент этого списка соответствующих путей. Если же список пуст, то подается звуковой сигнал, и ничего не выводится. После этого повторный ввод того же самого специального символа приводит к циклическому перебору всех соответствующих путей.
Нажатие клавиши Shift при вводе управляющего символа позволяет просматривать список путей в обратном порядке. Если изменить выведенный путь, а затем снова ввести управляющий символ, сохраненный список очищается, и строится новый список путей. То же самое происходит, если переключиться с одного символа завершения на другой. Единственное отличие при использовании символа завершения файла состоит в том, что при этом для построения списка соответствия берется и путь, и имя файла, а при использовании символа завершения папки — только путь.
Если символ завершения используется в одной из встроенных команд манипулирования папками (CD, MD или RD), то всегда подразумевается символ завершения папок.
Символ завершения правильно работает и с именами файлов, содержащими пробелы или иные специальные символы, если при этом строка соответствия заключена в кавычки. Кроме того, если сместить точку ввода влево, а затем использовать символ завершения внутри строки, оставшийся справа от точки ввода текст будет отброшен.
Специальные символы, которые требуют обязательного заключения в кавычки:
<пробел> & () { } ^ = ; ! ’ + , ` ~ "
Все понятно?
/K
Выполнение заданной команды без последующего завершения (здесь окно консоли не закроется).
/Q
Отключение вывода команд на экран (ECHO OFF).
/R
Аналогичен параметру /C.
/S
Изменение поведения команды после /C или /K.
/T:цвет
Задание цвета текста и фона окна консоли.
Параметр цвет имеет значение в виде двух шестнадцатеричных чисел: первое определяет цвет фона окна, а второе — текста в окне. Если набор цветов на момент запуска cmd.exe не менялся (например, другой сессией командного процессора), то по умолчанию будет использован параметр реестра, определяющий внешний вид консоли:
"DefaultColor"=dword:00000000
Соответствия этих чисел цветам приведены в таблице.
То есть результатом выполнения вот этой команды "CMD /T:7С" будут светло-красные буквы на белом фоне.
/U
Вывод результатов выполнения команды в формате Unicode.
/V:ON (/V:OFF)
Разрешение (запрет) отложенного расширения переменных среды (для конкретного вызова cmd.exe) с применением восклицательного знака "!" в качестве разделителя. Например, /V:ON разрешает использовать!var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит совсем к другим результатам внутри цикла FOR.
Также отложенное расширение переменных среды можно включить или выключить в реестре, в разделах (для локальной машины), (для текущего пользователя), установив параметр "DelayedExpansion"=dword:00000001 для разрешения и "DelayedExpansion"=dword:00000000 для запрета.
Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /V командного процессора имеет приоритет над параметрами реестра.
При включенном отложенном расширении переменных среды символ "!" (символ — восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения.
/X
Означает то же, что и ключ /E:ON, из соображений совместимости.
/Y
То же, что и /E:OFF.
И в завершение еще несколько ценных замечаний.
Если указаны ключи /C или /K, то остальная часть командной строки после такого ключа обрабатывается как командная строка, а обработка символов кавычек (") ведется таким образом. Символы кавычек в командной строке сохраняются, если выполняются все перечисленные ниже условия:
- ключ /S отсутствует;
- присутствует ровно два символа кавычек;
- между ними нет других специальных символов, как то: & < > () @ ^ |;
- между ними имеется один или несколько пробелов;
- строка, заключенная в кавычки, является именем исполняемого файла.
В противном случае проверяется первый символ, и если он является символом кавычек, то он удаляется, также удаляется последний символ кавычек в командной строке, а весь текст после этого последнего символа кавычек сохраняется.