Як програмувати у командному рядку. CMD - Різні уроки з Програмування

Як програмувати у командному рядку. CMD - Різні уроки з Програмування

The monster must die

Я не відношу себе до фахівців IT-сфери, ортодоксальних користувачів
інтернету або божевільним геймерам, однак у мене є комп'ютер, я працюю з
певним програмним забезпеченням та слідкую за комп'ютерно-інформаційною
ситуацією у світі. Насамперед через те, що ми живемо у post/інформаційному,
глобалізованому світі, де комп'ютери керують атомними станціями, військовими
об'єктами стратегічного призначення, і, хай вибачать мене закоренілі
слов'янофіли, мислення більшості населення. Вплив на високотехнологічну
сферу post/суспільства визначає вплив на людство загалом. Особливо якщо
цей вплив має монополіст.

Монополія на операційні системи, а якщо виражатися без техномонокультурних
вульгарностей, монополія на вдалі імітації штучного інтелекту, наводить
до певної політичної нестабільності. Наукові фантасти, проріки нашого
часу, неодноразово передбачали майбутнє, у якому великі корпорації
наділялися політичними повноваженнями. Що ж, коли певна система
взаємодіє з більшістю розумних користувачів і при цьому належить
(підпорядковується) вузькому колу осіб, ми можемо прогнозувати різні варіанти
розвитку подій. У нас навіть є можливість спиратися на реальний прототип,
якщо брати за основу корпорацію Microsoft. Відоме дітище Пола Альона та
Білла Гейтса відбивається від звинувачень у монополізмі з далекого 1990 року.
Тоді Федеральна комісія з торгівлі США (Federal Trade Commission) влаштувала
перевірку на предмет можливої ​​змови між Microsoft та IBM. Розслідування
заглохло, однак у 1993 році маркетинговою політикою Microsoft, пов'язаною з
поширенням DOS, зацікавилося Міністерство юстиції США. У 1994 році
між Microsoft і Міністерством юстиції укладається любовна угода,
умовам якого Microsoft забороняється використовувати своє вже тоді домінуюче
становище над ринком для придушення конкурентів. Наступного року Міністерство
блокує плани зі злиття Microsoft і компанії Intuit – знов-таки з
антимонопольних міркувань. У серпні 1997 року Microsoft влаштовує донорське
вливання свого конкурента - Apple Computers - на суму $150 мільйонів. Ці та
деякі інші дії Microsoft викликають у Міністерства юстиції
Негативні підозри. За два місяці Міністерство юстиції подає позов проти
Microsoft з вимогою призначити корпорації щоденний штраф у сумі 1 мільйон
доларів за порушення домовленості від 1994 року. І так далі і так по багато
раз, зі змінним успіхом Microsoft рухалася до своєї нинішньої лідируючої
позиції. Останній антимонопольний розгляд пройшов уже за територією
США, у Євросоюзі. Спеціально сформована комісія пригрозила штрафом до $3,2
млрд, якщо Компанія не відкриє для досліджень програмний код, а також не
виключить Media Player із комплекту операційної системи Windows. Однак, за
За словами представника Єврокомісії Тілмана Людера, «Microsoft навряд чи прийде
відкрити програмний код Windows. Компанія повинна буде лише надати
"протоколи", які дозволять конкурентам створювати сумісні з Windows
програмні продукти».

Microsoft же, дещо неоднозначно витлумачивши рішення комісії ЄС,
запропонувала відкрити вихідні коди Windows Server 2003 та надати документації
з описом протоколів під певними ліцензіями, які, звичайно, треба
буде купити. Поки неясно, чи задовольнять нові європейські чиновники
пропозиції Microsoft. Представники ЄС вже заявили, що уважно вивчать її
заяви. Проте не виключено, що конфлікт ЄС із Microsoft цим не вичерпається,
оскільки американська корпорація та європейські структури також сперечаються про ціну
ліцензій на використання коду Windows. До того ж, автори позову до Microsoft
вважають, що остання не має права брати гроші за ліцензії на мережеві
протоколи, оскільки це стандартне програмне забезпечення, зашифроване для
протидії конкурентам. У самій корпорації, однак, стверджують, що мова
йдеться про унікальні розробки.

Горщик з медом

Чого, власне, домагаються всі ці «антимонопольні» процеси, крім,
звичайно ж, обмеження зростання компанії? По-перше, змусити Microsoft випустити
обмежену версію Windows, з якої постачальники могли повністю викинути
будь-яку прикладну програму, яка так чи інакше «ущемляє» інтереси конкурентів –
будь-які мультимедійні утиліти, як Windows Media Player або Internet Explorer.
По-друге, наказати Microsoft надати конкурентам всю необхідну
технічну інформацію, щоб їх софт міг безглючно працювати з Windows.
По-третє, відкрити вихідні коди всієї операційної системи для ретельного вивчення.

Тепер слід докладніше зупинитися на відкритті вихідного коду Windows.
Зазирнути в нього дуже хотілося б і конкурентам, і розробникам із open source
community, і, цілком імовірно, хакерам;). Ось останніх у Microsoft, мабуть,
злякалися найбільше. Неодноразово представники Microsoft заявляли, що
відкритість - це якраз не перевага, що стверджують прихильники Linux, а
страшна небезпека: мовляв, будь-хто хоче знайти потрібну йому дірку, і
використовувати її на зло - вірус написати, або злом влаштувати. Тому краще
приховувати вихідні коди, разом із усіма їх дірками. Нагадаю, що у спільноті
відкритих програм прийнято перевіряти коди, виявляти помилки, заявляти про них та
намагатися залатати. Хто будь що здатний. Неодноразово висловлювалися думки і про те,
що у вихідниках Windows є такі огріхи, що відкривати їх означає і
поставити під теоретичну загрозу всіх тих, хто користується продукцією
Microsoft. Швидше за все, Microsoft Windows у всіх своїх версіях містить
вразливість, яку виправити неможливо (на думку деяких сторонніх
дослідників у різних версіях подібні Абсолютні Помилки різні). Лікувати її
приблизно те саме, як закладати дірку в середині фундаменту, на якому вже
стоїть багатоповерховий будинок. Безумовно Microsoft чудово обізнаний щодо
наявності Абсолютної помилки, але не вважають її вразливістю. Звичайно, адже вихідні
коди поки що приховані від очей громадськості.

Трохи зменшимо оберти і віддамо Компанії належне. Вона вже кілька років
надає вихідний код органам влади багатьох країн, у тому числі і
Російської Федерації. Факт забезпечення доступу до вихідних кодів Windows дуже
важливий, оскільки це програмне забезпечення є платформою, на основі
якої побудовані державні інформаційні системи багатьох країн, а також
і оборонні системи (а ви думали там скрізь на осі на базі Linux? :)).
Угоди мають на увазі не тільки надає доступ до вихідного коду Windows
та іншої важливої ​​технічної інформації, а також спільні роботи, а також
консультації з метою адаптації операційної системи до вимог, які
пред'являються державою до інформаційних систем, які у органах
державної влади. Надання корпорацією Microsoft вихідних кодів та
детальної технічної документації у рамках ініціативи GSP (Government Security)
Program) геніальний процес затвердження монополії Microsoft.
Справді, відкриття кодів - виключно сильний аргумент у суперечці з активно
наступаючими клонами Linux. Причому заявлений перехід на Linux ряду
урядових установ у Європі не підкріплено економічними розрахунками.
Звичайно, Linux можна налаштувати точно під потреби конкретного користувача,
обмеживши функціональність системи, але потреба в такому підході поки що низька,
при тому, що потребує високої кваліфікації фахівців, які обслуговують систему. В
У випадку з Windows відкриття кодів заспокоїть тих, хто переконаний, що в операційну
систему вбудовуються будь-які додаткові шпигунські функції, а також
зміцнить становище Microsoft над ринком. Крім того, теоретично з'являється
можливість точно такого ж тонкого налаштування операційної системи під потреби
певної групи користувачів.

Навіть лояльні до Microsoft чиновники розуміють, що закритість вихідних кодів і
технічної інформації робить програми корпорації потенційно небезпечними для
національні інтереси країни. Хто може гарантувати, що ті дірки, які всі
час знаходять хакери, не залишені Microsoft спеціально, щоб заглядати в
комп'ютери користувачів? Нехай це не так. Менеджмент Microsoft складається з
кришталево чесних людей. Але хто доручиться, що під тиском урядових
структур Сполучених Штатів випадково допущені помилки не будуть використані без
відома інших держав на їхній території? Не варто забувати, що йде
масштабна антитерористична кампанія, а Microsoft звинувачується багатьма
американськими штатами та урядовими організаціями в монополізмі та
нечесної конкуренції. У такому положенні навряд чи Білл Гейтс буде
послідовно обстоювати права громадян інших країн.

Вихідні коди можна переглядати, але змінювати їх можна тільки разом
спеціалістами Microsoft. Крім цього компанія надає технічну
інформацію про платформу Windows для створення більш захищених обчислювальних
систем. Так, відразу і не зрозумієш де ж тут захист, коли всі інтимні захисні
операції здійснюються за участю та під наглядом співробітників Microsoft? Але сила
Microsoft, звісно, ​​над кодах, а знанні психології.

Полювання на код

Кілька років тому багато галасу наробив історія з крадіжкою та поширенням
через інтернет вихідників 2000 та NT 4.0. Частина коду, що з'явилася в інтернеті,
була, на думку експертів, першим сервіс-паком для Windows 2000 та
датувалась 25 липня 2000 року. Передбачалося, що джерелом витоку став файл
розвантаження оперативної пам'яті, згенерований одним із комп'ютерів компанії
Mainsoft, що працює під Linux. Під час розслідування витоку вихідних кодів
операційних систем Windows 2000 і Windows NT стало відомо, що у вільному
У доступі виявилося порядку 15 відсотків оригінального тексту програм. Мова йде
про 30915 файлів вихідного коду Windows 2000, що містять 13,5 мільйона рядків
тексту, і 95103 файлів і 28 мільйонів рядків коду Windows NT. Вихідний код був
написаний мовами програмування асемблер, С і С++.

Публікація вихідного коду захопила інтернет-спільноту, але
насторожила експертів. «У тому, що вихідний код потрапить до випадкових рук, ні
нічого хорошого, - говорив старший менеджер центру екстреного реагування
- Його зможуть вивчати антивірусної компанії Symantec Олівер Фрідріхс.
зловмисники, і у сек'юріті-експертів не буде можливості знаходити вразливості
наперед».

Проте Microsoft заперечує та заперечує можливість будь-яких проблем безпеки.
У заяві компанії йдеться, що її найбільше непокоїть можливість крадіжки
результатів її праці, а не загроза безпеці, створювана цим витоком. «Якщо
невеликий фрагмент вихідного коду Windows стає загальнодоступним, це
проблема захисту прав інтелектуальної власності, а не безпеки» - заявив
представник компанії. Як бачите, компанію в першу чергу хвилюють питання
фінансових втрат. Втім, не дивно: багато експертів упевнені, що
побоювання з приводу того, що витік кодів призводить до масового виявлення
вразливості, безпідставні. Теоретично для хорошого інженера-аналітика весь
код є відкритим. До того ж, навіть геніальному хакеру на вивчення коду
потрібно стільки часу, що до моменту, коли він буде готовий використати
вразливість, вийде оновлена ​​версія програмного продукту. Спірне
припущення, чи не так? Але якщо воно вас не заспокоює, ставте альтернативні
програмні продукти на основі відкритих кодів і радійте життю.

Quality on conscience of the buyer

А як же справи з відкриттям коду Windows 2003, запитає уважний
читач. Ну, його нах, відповідають представники IT-сфери. Microsoft ніхто і не
просив відкривати коди цієї системи Це взагалі потрібно лише самій Microsoft.
Клонувати код можна і без Microsoft, а ось отримати виразну документацію –
ні. Microsoft прагне ліцензувати власне ПЗ, щоб мати ще більше
можливостей контролю доступу Ще у 2004 році рішення Єврокомісії говорило про
тому, що Компанії слід у 120-денний термін надати точну документацію
інтерфейсу. Розкрита інформація повинна була оновлюватися щоразу після
випуску нових версій Про вихідні коди взагалі не йшлося. Представники
Microsoft із розумним виглядом заявили, що «вихідний код – це і є остаточна
документація, ДНК-системи». Справді, не відмажеш. Від таких визначень у
пору божеволіти юристам і влаштовувати нескінченні судові процеси. На чому,
власне, і будується Компанія вже стільки років.

У 2004 році Microsoft за рішенням ЄС надала 12 000 сторінковий (ага, це
не друкарська помилка – 12 тисяч сторінок) трактат з описом вихідного коду. Тоді
розібратися у ньому єврофахівці не змогли. Нинішнього року майкрасофтівці
зглянулися та пообіцяли лише 500 годин техпідтримки зі спробою пояснення, чого
а вони там на 12.000 сторінок написали. Складається враження, що Microsoft
як може, в рамках доступного законодавства, гальмує процес, відомий
аксіомі "все таємне рано чи пізно стає явним" і при цьому ще намагається
проводити вигідну собі політику запатентованих товарів. Програма з
«викриття» Windows у Microsoft передбачає надання лише довідкових
ліцензій на вихідний код Тому Microsoft дозволить переглядати код,
виявляти у ньому помилки, але дозволить вносити зміни. Так що якщо ви
створюєте власні програми для Windows, то можете налагоджувати код цих
програм та код Windows з відповідними API. По ідеї це означає, що за
аналізі функцій захисту ніхто не буде проводити повну перевірку захисту Windows,
але компоненти, пов'язані з вашою програмою, перевірити буде можливо. Якщо ж
ви виявите помилку в Windows, то будете зобов'язані повідомити про неї в офіс
Microsoft. І навіть якщо ви запропонуєте спосіб усунення помилки, Компанія
залишає за собою право вибирати, включати чи ні його в наступний сервіс-пак.

Навіть при оптимальному варіанті дослідження коду Компанія надасть близько
95% Windows. Ще три відсотки коду Microsoft начебто не належить, а
деякі місця – такі, як код активації продукту – мають занадто велику
цінність, щоби їх відкривати. До того ж, поширення деяких
криптографічних елементів обмежено урядом США і не може бути
експортовані до інших країн.

Час уже зрозуміти, що вихідні коди Windows - це міф. За інформацією
Microsoft, ОС Windows містить кілька десятків (якщо не сотень) мільйонів
рядків коду, який постійно доопрацьовується та модернізується. Навіть у самій
Компанії не зовсім точно розуміють, що вони розробили. Розбиратися у коді
дуже і дуже складно. Шуміха, що час від часу піднімається навколо вихідників,
вигідна насамперед самої Microsoft. Не відкриють коди – збережуть
комерційну таємницю та приховують численні помилки. Відкриють ще краще.
Забезпечити жорсткіший контроль за ліцензіями, вдарять по Linux і практично
нічого не втратять. У 2006 році обіцяно випуск нової операційної системи Windows
Vista, вихідники якої ніхто не збирається відкривати. Хочеться запитати у
Майкрософт – які конкретно вигоди отримає користувач від рішення Комісії ЄС?
Що саме ми маємо взагалі від рішень Компанії з власного вихідного коду?

Ядро Windows:

  • USER (16, 32) .dll- Функції введення з клавіатури миші, введення через інтерфейс і т.д. (взаємодія програм із користувачами та середовищем Windows).
  • KERNEL (16, 32) .dll- Функції операційної системи (пам'ять, розподіл системних ресурсів, завантаження).
  • GDI (16, 32) .dll– графічний інтерфейс (функції створення та відображення графічних об'єктів).

GUI (Graphics User Interface)- Стандартний графічний інтерфейс користувача. Це та частина Windows, яка забезпечує підтримку апаратно-незалежної графіки.

API (Application Program Interface)- інтерфейс прикладних програм (набір функцій, зосереджених у ядрі Windows та додаткових бібліотеках).

DLL (Dynamic Link Libraries)- бібліотека динамічного компонування. Функції API містяться в бібліотеках динамічного завантаження.

DDE- динамічний обмін даними.

Нотація Windows ("угорська нотація Чарльза Сімоні")

При програмуванні під Windows прийнято використовувати префікси перед іменами змінних, що вказують на належність типу даних. Рекомендується давати імена власним змінним та ідентифікаторам, дотримуючись наступних принципів:

  1. мнемонічне значення- Ідентифікатор повинен легко запам'ятовуватися;
  2. смислове значення– роль ідентифікатора має бути зрозуміла з його назви;
  3. наступність– схожі об'єкти повинні мати схожі ідентифікатори;
  4. швидкість прийняття рішення- Вигадування, введення та редагування ідентифікатора не повинні займати багато часу.

Деякі префікси угорської нотації:

Префікс Значення
A масив
B логічний тип (int)
By беззнаковий символьний тип (byte)
C символьний тип (1 байт)
Cb лічильник байтів
Cr колір
cx,cy короткий тип (short)
Dbl double (з плаваючою точкою)
Dw беззнакове довге ціле число (dword)
Flt float (речова з плаваючою точкою)
Fn функція
g_ префікс для глобальної змінної (глобальна змінна)
H handle (беззнакове ціле число)
hDC handle (покажчик на контекст пристрою)
I ціле (integer)
Id інтегральне значення ідентифікатора
L довгий тип (long)
Lp довгий покажчик
Lpsz дальній покажчик на рядок, що закінчується нульовим байтом
m_ змінна класу
N short або int
Np ближній покажчик
P покажчик
Pfn покажчик на функцію
Pst покажчик на структуру
Psz покажчик на рядок, що закінчується нульовим байтом
Pv вказівник на тип void
S рядок
Sz рядок, що закінчує нуль-символом
U беззнаковий символ
Tm текстова метрика
V тип void
W беззнакове ціле (word, 16-біт)
x, y коротке ціле число (координата x або y)

Типи даних Windows, що часто використовуються:

Тип даних Опис
HANDLE визначає ідентифікатор; 32-розрядне ціле, що використовується як дескриптор – число, що визначає певний ресурс
HWND визначає ідентифікатор вікна
HDC визначає ідентифікатор контексту пристрою
LONG 32-бітове ціле зі знаком
LPSTR визначає лінійний покажчик
NULL 0
UINT тип даних Win32 (32 біт для Win32)
WCHAR 16-розрядний символ UNICODE. Використовується для представлення символів мов світу

Додамо наступний код:

#include LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) ( HWND hwnd; MSG msg; WNDCLASS w; memset(&w,0,sizeof(WNDCLASS)); WndProc, w.hInstance = hInstance, w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);w.lpszClassName = "My Class"; RegisterClass(&w); 500, 300, 500, 380, NULL, NULL, hInstance, NULL), ShowWindow(hwnd,nCmdShow); &msg); ) return msg.wParam; ) LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) , wparam, lparam);) return 0;

Скомпілюємо та запустимо програму. На екрані з'явиться вікно Windows.






rem програма_1
cls
@echo off
color 0A
set string=Hellow World!
echo %string%







program_1.cmd

rem програма_2
cls
@echo off
color 0A
set a=1
set timer=10
) else (echo a! = 1)


ну зате зрозумілий для багатьох.


rem програма_3
cls
@echo off
color 0A



(for /f "tokens=1-5" %A in (users.txt) do @echo %D) > emails.txt

Наприклад, база у нас «ідеальна», на кшталт:

alexeykursk alexeykursk

2008-11-14T21:33:19Z 2008-11-14T21:33:19Z

Програмування в Cmd вступ для новачків

-

Програмування в Cmd (введення для новачків)

Це всього лише введення в команди cmd, не судіть суворо, стаття писалася для Новіков, та і багатьом іншим я думаю у нагоді =)
Напевно багато хто і не підозрюють, що cmd це універсальна оболонка,
яка дозволяє не просто адмініструвати систему, а й програмувати!
Звичайно рівень мови не такий високий, як наприклад, але все ж...

Для початку, напишемо невелику програму, яка виводитиме рядок, записану в змінну.
Заходимо на диск С:\ і створюємо там щось типу program_1.cmd (можна *.bat)
відкриваємо його блокнотом і вписуємо туди наступні рядки:

rem програма_1
cls
@echo off
color 0A
set string=Hellow World!
echo %string%

rem - використовується для опису коментарів
cls - якщо хтось ще не знає, це відчистка екрану
@echo off – вимикаємо відображення команд на екрані. Зверніть увагу на @
перед ECHO! Вона запобігає ехо-відображенням команд в окремому рядку.
color 0A - задаємо колір фону та тексту
set string=Hellow World! - set використовується для опису змінних
echo %string% - виведення на екран змінної, зверніть увагу на %%, це
позначає, що це справді змінна, а не рядок!

З кодом розібралися, тепер подивимося на результат програми! Запускаємо її на виконання через cmd:
program_1.cmd
Результат виконання буде, як ви здогадалися Hellow World! Яскраво-зелені літери на чорному тлі

Тепер трохи ускладнимо завдання, додамо в цей код умова!

rem програма_2
cls
@echo off
color 0A
set a=1
set timer=10
if %a%==1 (shutdown /r -t %timer% -c "Вас похекали"
) else (echo a! = 1)

Я думаю, ви вже здогадалися, що буде на висновку. Ми порівнюємо значення записане в змінну "а" з 1, якщо умова істина, то комп'ютер перезавантажиться через 10 секунд, інакше на висновок подається напис, що a!=1. Приклад банальний і простий,
ну зате зрозумілий для багатьох.

А тепер перейдемо безпосередньо до циклів. Розглянемо найпростіший приклад:
rem програма_3
cls
@echo off
color 0A
for /l %B in (0,1,10) do echo %B

дана програма виведе до стовпчика цифри, від 0 до 10 з кроком 1 =) все просто, як...
А тепер трохи складніше, for може використовуватися у більш вагомих цілях,
наприклад, для перебору файлів, для прикладу можете написати в cmd:

for %B in (C:*.cmd) do (echo %B)

У відповідь ви отримаєте всі ваші програми з розширенням *.cmd

Також циклом for можна перебрати каталоги, наприклад

for /d %B (C:*) do echo %B

Покаже всі каталоги на диску С: (Зверніть увагу, тільки каталоги, а не підкоталоги!)

А тепер напишемо суттєву програму, яка з бази вибиратиме емейли і записуватиме їх в інший файл.

(for /f "tokens=1-5" %A in (users.txt) do @echo %D) > emails.txt

Наприклад, база у нас «ідеальна», на кшталт.

У цій статті будуть розглянуті основи командного рядка Windows, а саме:

  • Поняття командного рядка;
  • Довідник з команд командної оболонки;
  • Послідовність подій під час виконання команди;
  • Створення сценаріїв командного рядка;
  • Управління відображенням тексту та команд;
  • Команди на вивчення системної інформації;
  • Команди для використання реєстру;
  • Управління системними службами;
  • Перезавантаження та вимкнення систем з командного рядка;
  • Управління програмами та процесами з командного рядка.

Поняття командного рядка

Підтримка командного рядка вбудована в операційну систему Microsoft Windows та доступна через вікно командної оболонки. Командний рядок підтримується у всіх версіях Windows і служить для запуску вбудованих команд, утиліт та сценаріїв. Незважаючи на потужність та гнучкість командного рядка, деякі адміністратори Windows ніколи її не використовують. Якщо вам вистачає графічних засобів адміністрування, можна застосовувати лише їх, клацаючи мишею елементи інтерфейсу користувача.

Проте досвідчені адміністратори Windows, кваліфіковані спеціалісти з технічної підтримки та «просунуті» користувачі не можуть обійтися без командного рядка. Знаючи, як правильно застосовувати командний рядок, зокрема які засоби командного рядка вибрати, як і коли їх використовувати, щоб вони працювали ефективно, можна уникнути численних проблем і домогтися чіткого виконання операцій. Якщо ви займаєтеся підтримкою кількох доменів або мереж, то для автоматизації щоденних операцій не тільки важливо, але й необхідно мати уявлення про економічні часи способи роботи з командним рядком.

З кожною новою версією Windows командний рядок удосконалювався, а його можливості розширювалися. Командний рядок зазнав значних змін, пов'язаних не тільки з підвищенням продуктивності, а й зі збільшенням гнучкості. Тепер за допомогою командного рядка Windows можна вирішувати завдання, які не можна було вирішити у попередніх версіях Windows.

Середовище командної оболонки Windows запускають різними способами, зокрема вказуючи параметри при запуску Cmd.exe або використовуючи власний стартовий файл, що зберігається в каталозі %SystemRoot%\System32.

Крім того, командний рядок може працювати в пакетному режимі для набору команд. У пакетному режимі командний рядок зчитує та виконує команди одну за одною.

Працюючи з командним рядком Windows, Ви повинні розуміти, звідки беруться команди, які Ви використовуєте. «Рідні» команди (вбудовані в операційну систему) бувають двох видів:

  • Внутрішні– існують усередині командної оболонки, вони не мають окремих виконуваних файлів;
  • Зовнішні— реалізовані в окремих файлах, які зазвичай зберігаються в каталозі %SystemRoot% \System32.

Короткий довідник команд командної оболонки (Cmd.exe)

  • assoc- Виводить або змінює зіставлення ( associations) типів файлів;
  • break- Задає точки зупинки при налагодженні
  • call- Викликає зі сценарію процедуру або інший сценарій;
  • cd (chdir) -показує ім'я поточного каталогу або змінює поточний каталог;
  • cls- Очищає вікно командного рядка та буфер екрану;
  • color- задає кольори тексту та фону вікна командної оболонки;
  • сміттю- Копіює файли або виконує конкатенацію файлів;
  • date- Вказує або встановлює поточну дату;
  • del (erase) -видаляє заданий файл, групу файлів чи каталог;
  • dir— показує список підкаталогів та файлів у поточному чи заданому каталозі;
  • echo— виводить текст у вікно командного рядка або задає, чи відображати команди на екрані (on|off);
  • endlocal- Зазначає кінець локалізації ( локальної області видимості) змінних;
  • exit- Вихід з оболонки командного рядка;
  • for- Виконує задану команду для кожного файлу в наборі;
  • ftypeвиводить або змінює поточні типи файлів у порівнянні розширень файлів з програмами;
  • goto- Вказує, що інтерпретатор команд повинен перейти на рядок із заданою міткою в пакетному сценарії;
  • if- Виконує команди за умовою;
  • md (mkdir)- створює підкаталог у поточному або заданому каталозі;
  • move— переміщує файл або групу файлів із поточного або заданого вихідного каталогу до зазначеного каталогу. Також може перейменовувати каталог;
  • path— показує або задає шлях до команд, що використовується операційною системою при пошуку файлів і сценаріїв, що виконуються;
  • pause— зупиняє виконання пакетного файлу та очікує на введення з клавіатури;
  • popd- робить поточним каталог, ім'я якого було збережено командою PUSHD;
  • prompt- Вказує, який текст повинен відображатися в рядку запрошення;
  • pushd— зберігає ім'я поточного каталогу та за необхідності робить поточним заданий каталог;
  • rd (rmdir)— видаляє каталог або каталог разом із його підкаталогами;
  • rem— позначає коментарі у пакетному сценарії або Config.nt;
  • ren (rename)- Перейменовує файл або групу файлів;
  • set- Показує поточні змінні оточення або задає тимчасові змінні для поточної командної оболонки;
  • setlocal- Відзначає початок локалізації ( локальної області видимості) змінних у пакетних сценаріях;
  • shift— зсуває позицію параметрів, що заміщуються в пакетних сценаріях;
  • start- Запускає задану програму або команду в окремому вікні;
  • time- показує або встановлює системний час;
  • title- Задає заголовок вікна командної оболонки;
  • type- Вказує вміст текстового файлу;
  • verify- Включає режим перевірки файлів після запису на диск;
  • vol— показує позначку та серійний номер дискового тома.

Синтаксис будь-якої внутрішньої команди ( та більшості зовнішніх) можна отримати, ввівши в командному рядку ім'я команди та /?, наприклад:

Командна оболонка- дуже потужне середовище роботи з командами та сценаріями. У командному рядку можна запускати команди різних типів: вбудовані команди, утиліти Windows та версії програм, розраховані на командний рядок. Незалежно від типу, кожна команда, яку ви будете використовувати, повинна відповідати одним і тим же синтаксичним правилам. Згідно з цими правилами, за ім'ям команди йдуть обов'язкові чи необов'язкові аргументи. Крім того, аргументи можуть використовувати перенаправлення введення, виведення або стандартних помилок.

Послідовність подій під час виконання команди

  • Командна оболонка замінює будь-які змінні, введені в тексті команд, їх поточними значеннями;
  • Якщо введено групу або ланцюжок з кількох команд, рядок розбивається на окремі команди, які розбиваються на ім'я та аргументи команди. Далі команди обробляються окремо;
  • Якщо в імені команди вказано шлях, командна оболонка шукає команду цим шляхом. Якщо в цьому каталозі такої команди немає, командна оболонка повертає помилку;
  • Якщо в імені команди не встановлено шлях, командна оболонка спочатку намагається дозволити ім'я команди на внутрішньому рівні. Якщо знайдено внутрішню команду з таким ім'ям, це означає, що викликана внутрішня команда, яку відразу ж можна виконати. Якщо внутрішньої команди з такою назвою немає, командна оболонка спочатку шукає виконуваний файл команди в поточному каталозі, а потім у каталогах, переліку в змінному оточенні PATH. Якщо файлу команди немає у жодному з цих каталогів, командна оболонка повертає помилку;
  • Якщо команда знайдена, вона виконується із заданими аргументами і в разі необхідності введення зчитується з джерела, зазначеного в цих аргументах. Виведення та помилки команд показуються у вікні командного рядка або надсилаються заданому приймачеві виведення та помилок.
  • Як бачите, на виконання команд впливають багато факторів, у тому числі шляхи до команд, перенаправлення введення-виводу, групування або створення ланцюжків команд.

При роботі з командною оболонкою Ви, можливо, запускали її, відкриваючи меню Start ( Пуск) та вибираючи Programs ( Програми) або All Programs ( Усі програми), потім Accessories ( Стандартні) та Command Prompt ( Командна строка). Інші способи запуску командного рядка - діалогове вікно Run ( Запуск програми) або введення cmd в іншому вже відкритому вікні командної оболонки. Ці способи дозволяють при запуску командного рядка вказувати аргументи: ключі, що управляють роботою командного рядка, та параметри, що ініціюють виконання додаткових команд. Наприклад, можна запустити командну оболонку в «мовчазному» режимі ( тобто відключити ехо-висновок) командою cmd /q або зробити так, щоб командна оболонка виконала задану команду і завершила свою роботу, для цього потрібно ввести cmd /с, а потім текст команди в лапках.

У наступному прикладі командна оболонка запускається, виконує команду ipconfig з виведенням результатів у файл і завершується:

Cmd /c "ipconfig > c:\ipconfig.txt"

Створення сценаріїв командного рядка

Сценарії командного рядка— текстові файли з командами, які ви бажаєте виконати. Це ж команди, які зазвичай вводяться в командній оболонці Windows. Проте замість того, щоб вводити команди щоразу, коли вони знадобляться, можна створити відповідний сценарій та спростити собі життя.

Оскільки сценарії складаються із стандартних текстових символів, їх можна створювати та редагувати у будь-якому стандартному текстовому редакторі, скажімо, у Notepad ( блокнот). Вводячи команди, переконайтеся, що кожна команда або група команд, які мають виконуватися спільно, розкидаються з нового рядка. Це забезпечить їхнє коректне виконання. Закінчивши створення сценарію командного рядка, збережіть файл сценарію з розширенням .bat або .cmd. Обидва розширення працюють однаково. Наприклад, якщо вам потрібно створити сценарій для виведення імені системи, версії Windows та конфігурації IP, увімкніть у файл SysInfo.bat або SysInfo.cmd наступні три команди:

Hostname ver ipconfig -all

Керування відображенням тексту та команд

Команда ECHOслужить двом цілям: для запису тексту на висновок ( наприклад, у вікно командної оболонки або текстовий файл) і для увімкнення/вимкнення ехо-відображення команд. Зазвичай під час виконання команд сценарію самі команди та виведення цих команд відображаються у консольному вікні. Це називається луною відображенням команд ( comand echoing).

Щоб використати команду ECHO для відображення тексту, введіть echo та текст, який потрібно вивести:

Echo System host name Is: hostname

Щоб за допомогою ECHO керувати ехо-відображенням команд, введіть echo off або echo on, наприклад:

Echo off echo Система host name is: hostname

Щоб надіслати вивід у файл, а не у вікно командної оболонки, використовуйте перенаправлення виводу, наприклад:

Echo off echo Система host name is: > current.txt hostname » current.txt

Тепер подивимося, як пригнічується відлуння команд. Запустіть командну оболонку, введіть echo off та інші команди. Ви побачите, що запрошення командного рядка більше не відображається. Замість нього з'являється лише те, що набирається у консольному вікні, та виведення виконаних команд. У сценаріях команда ECHO OFF відключає ехо-відображення команд та запрошення командного рядка. Додаючи у свої сценарії команду ECHO OFF, ви запобігаєте захаращенню вікна командної оболонки або файлу текстом команд, якщо Вас цікавить лише виведення від цих команд.

Вивчення системної інформації

Часто під час роботи з комп'ютером користувача або віддаленим сервером виникає необхідність отримання базової інформації про систему на кшталт імені зареєстрованого в ній користувача, поточного системного часу або розташування певного файлу. Команди, які дозволяють зібрати основну інформацію про систему, включають:

  • NOW— відображає поточну системну дату та час у 24-годинному форматі, наприклад, Sal May 9 12:30:45 2003. Доступна лише у Windows Server 2003 Resource Kit;
  • WHOAMI- Повідомляє ім'я користувача, зареєстрованого в системі на даний момент, наприклад adatum\admi-nistrator;
  • WHERE- Виконує пошук файлів за шаблоном пошуку ( search pattern) і повертає список результатів, що збіглися.

Щоб використовувати NOW або WHOAMI, просто введіть команду у вікні командної оболонки та натисніть Enter. Найбільш поширений синтаксис для WHERE виглядає так:

Where /r базовий_каталог_ім'я_файлу

Тут параметр /r вказаний для рекурсивного пошуку, починаючи від зазначеного каталогу (базовий_каталог) і включаючи всі його підкаталоги, а ім'я_файлу - повне або часткове ім'я файлу, яке може включати символи підстановки (wildcards): знак? замінює один символ, а знак * – групу символів, наприклад data???.txt або data*.*. У прикладі в каталозі З:\ і всіх його підкаталогах виконується пошук всіх текстових файлів, імена яких починаються з data.

Where /r C:\data*.txt

Також можна знайти файли всіх типів, імена яких починаються з data:

Where /r C:\data*.*

Іноді потрібно отримати інформацію про конфігурацію системи або системне оточення. У критично важливих системах цю інформацію можна зберегти або надрукувати для довідки. Нижче наведено команди, які дозволяють збирати інформацію про систему.

  • DRIVERQUERY— виводить список усіх встановлених драйверів пристроїв та їх властивості, у тому числі ім'я модуля (module name), яке відображається ( display name), тип драйвера та дату складання ( driver link date). У режимі відображення всієї інформації (/V) повідомляється статус (status) та стан (state) драйвера, режим запуску, відомості про використання пам'яті та шлях у файловій системі. Параметр /V також включає виведення детальної інформації про всі непідписані драйвери.
  • SYSTEMINFO— видає докладну інформацію про конфігурацію системи, у тому числі відомості про версію, тип і виробник операційної системи, процесор, версію BIOS, обсяг пам'яті, регіональні стандарти, часовий пояс і конфігурацію мережного адаптера.
  • NLSINFO— відображає детальну інформацію про регіональні стандарти, включаючи мову за замовчуванням ( default language), кодову сторінку Windows, формати відображення часу та чисел, часовий пояс та встановлені кодові сторінки. Ця команда доступна лише у Windows Server 2003 Resource Kit.

Щоб використовувати ці команди на локальному комп'ютері, просто введіть ім'я команди у вікні командної оболонки і натисніть Enter.

Команди для використання реєстру

Реєстр Windows зберігає конфігураційну інформацію операційної системи, програм, користувачів та обладнання. Ці дані містяться в розділах ( keys) та параметрах ( values) реєстру, які розміщуються у певному кореневому розділі ( root key), який контролює, як і коли використовуються розділи та параметри.

Якщо Ви знаєте шляхи до розділів і розумієте допустимі типи даних у розділах, можете використовувати команду REGдля перегляду розділів та параметрів та маніпуляцій над ними найрізноманітнішими способами. REG підтримує кілька підкоманд:

  • REG add- Додає в реєстр новий підрозділ або елемент;
  • REG delete- Видаляє з реєстру підрозділ або елемент;
  • REG query- виводить список елементів розділу та імена підрозділів ( якщо вони є);
  • REG compare- Порівнює підрозділи або елементи реєстру;
  • REG сміття— копіює елемент реєстру вказаним шляхом розділу на локальній або віддаленій системі;
  • REG restore- записує в реєстр раніше збережені підрозділи, елементи та параметри;
  • REG save— зберігає копію зазначених підрозділів, елементів та параметрів реєстру у файл.

Управління системними службами

Служби забезпечують ключові функції робочих станцій та серверів. Для управління системними службами на локальних та віддалених системах використовується команда контролера служб ( service controller command) SC, що має набір підкоманд, нижче описується лише їх частина:

  • SC config- Налаштування облікових записів реєстрації та запуску служб;
  • SC query- Виведення списку всіх служб, налаштованих на комп'ютері;
  • SC qc- Відображення конфігурації певної служби;
  • SC start- Запуск служб;
  • SC stop- Зупинка служб;
  • SC pause- Припинення роботи служб;
  • SC continue- відновлення роботи служб;
  • SC failure- Завдання дій, що виконуються при збої служби;
  • SC qfailure— Перегляд дій, які виконуються під час збою служби.

У всіх командах можна вказувати ім'я віддаленого комп'ютера, із службами якого Ви бажаєте працювати. Для цього вставте UNC-ім'я або IP-адресу комп'ютера перед підкомандою. Ось синтаксис:

Sc Ім'яСервера Підкоманда

Перезавантаження та вимкнення систем з командного рядка

Системи часто доводиться перезавантажувати або вимикати. Один із способів – використовувати для цього утиліту Shutdown, яка дозволяє працювати з локальною та віддаленими системами. Інший спосіб керувати вимкненням або перезавантаженням системи – призначити завдання для вимикання. Тут можна використовувати Schtasks, щоб вказати час вимкнення або створити сценарій зі списком команд вимкнення для індивідуальних систем.

Керувати перезавантаженням та вимкненням локальної системи дозволяють наступні команди.

Вимкнення локальної системи:

Shutdown /s /t ЗатримкаВимкнення /1 /f

Shutdown /r /t ЗатримкаВимкнення /1 /f

Управління програмами, процесами та продуктивністю

Щоразу, коли операційна система або користувач запускає службу, програму або команду, Microsoft Windows запускає один або більше процесів для керування відповідною програмою. Декілька утиліт командного рядка спростять вам моніторинг програм та управління ними. До цих утиліт відносяться:

  • Pmon (Process Resource Manager) - показує статистичні дані щодо продуктивності, включаючи використання пам'яті та процесора, а також список усіх процесів, що виконуються в локальній системі. Дозволяє отримувати детальні знімки» задіяних ресурсів та виконуваних процесів. Pmon постачається з Windows Resource Kit;
  • Tasklist (Task List) - перераховує всі виконувані процеси по імені та ідентифікатору процесу, повідомляє інформацію про сеанс користувача і пам'яті;
  • Taskkill (Task Kill) - зупиняє виконання процесу, заданого на ім'я або ідентифікатор. За допомогою фільтрів можна зупиняти процеси в залежності від стану, номера сеансу, процесорного часу, пам'яті, імені користувача та інших параметрів.

Ось у принципі все, що я хотів розповісти про основи командного рядка Windows.

Командна оболонка це окремий програмний продукт, який забезпечує прямий зв'язок між користувачем та операційною системою. Текстовий інтерфейс командного рядка надає середовище, в якому виконуються програми та службові програми з текстовим інтерфейсом. У командній оболонці програми виконуються та результат виконання відображається на екрані у вигляді, подібному до інтерпретатора Command.com MS-DOS.

Використання кількох команд та символів умовної обробки

Можна виконувати кілька команд з одного командного рядка або сценарію за допомогою символів умовної обробки. При використанні кількох команд, що містять символи умовної обробки, виконання команд, що стоять праворуч від символу умовної обробки, буде проводитись залежно від результатів виконання команди, що стоїть зліва від символу. Наприклад, потрібно, щоб команда виконувалася тільки якщо попередня команда не була виконана успішно. Або потрібно, щоб команда виконувалася тільки якщо попередня команда була виконана успішно.

Для передачі кількох команд можна використовувати спеціальні символи, перелічені у наведеній нижче таблиці.

СимволСинтаксисВизначення
& [...] команда1 & команда2 Використовується для розділення кількох команд в одному командному рядку. У Cmd.exe виконується перша команда, потім друга команда.
&& [...] команда1 && команда2 && , тільки якщо команда, що стоїть перед цим символом, була виконана успішно. У Cmd.exe виконується перша команда. Друга команда виконується лише якщо перша була виконана успішно.
|| [...] команда1 || команда2 Запускає команду, що стоїть за символом || , тільки якщо команда, що стоїть перед символом || була виконана. У Cmd.exe виконується перша команда. Друга команда виконується тільки якщо перша не була виконана (отриманий код помилки перевищує нуль).
() [...] (команда1 & команда2) Використовується для групування чи вкладення команд.
; або , команда1 параметр1; параметр2 Використовується для розділення параметрів команди.

Примітки

  • Амперсанд (&), вертикальна риса (|) та дужки () є спеціальними символами, яким повинен передувати керуючий символ (^) або лапки, якщо ці символи передаються як аргументи.
  • Якщо команда завершує операцію успішно, повертається нульовий (0) код помилки або не повертається жодного коду.

Вкладені командні оболонки

Існує можливість вкладати командні оболонки в Cmd.exe, відкриваючи новий екземпляр Cmd.exe з командного рядка. За замовчуванням кожен екземпляр Cmd.exe успадковує середовище своєї батьківської програми Cmd.exe. Вкладення екземплярів Cmd.exe дозволяє вносити в локальне середовище зміни, які не вплинуть на батьківську програму Cmd.exe. Це дозволяє зберігати вихідне середовище Cmd.exe та повертатися до нього після видалення вкладеної командної оболонки. Зміни вкладеної командної оболонки не зберігаються.

Щоб створити вкладену командну оболонку, введіть у командному рядку:

З'явиться таке повідомлення:

Microsoft (R) Windows XP (TM)
(C) Copyright 1985-2001 Microsoft Corp.

Щоб закрити всі вкладені оболонки, введіть команду exit.

Можна ще локалізувати зміни в екземплярі Cmd.exe (або в сценарії) за допомогою команд setlocalі endlocal. Команда setlocalстворює локальну область, а endlocalїї видаляє. Будь-які зміни, зроблені всередині області, створеної командами setlocalі endlocal, не враховуються; таким чином, вихідне середовище залишається без змін. За допомогою цих команд можна створити до 32 вкладених областей.

Використання змінних середовища в Cmd.exe

Середовище командної оболонки Cmd.exe визначається змінними, що задають поведінку командної оболонки та операційної системи. Є можливість визначити поведінку середовища командної оболонки або середовища усієї операційної системи за допомогою двох типів змінних середовища: системних та локальних. Системні змінні середовища визначають поведінку глобального середовища операційної системи. Локальні змінні середовища визначають поведінку середовища в цьому примірнику Cmd.exe.

Системні змінні середовища задані в операційній системі і доступні для всіх процесів Windows XP. Тільки користувачі з привілеями адміністратора можуть змінювати ці змінні. Ці змінні найчастіше використовуються у сценаріях входу до системи.

Локальні змінні середовища доступні лише тоді, коли користувач, для якого вони були створені, увійшов до системи. Локальні змінні із куща HKEY_CURRENT_USERпідходять лише для поточного користувача, але визначають поведінку глобального середовища операційної системи.

У наступному списку представлені різні типи змінних у порядку зменшення пріоритету.

  1. Вбудовані системні змінні
  2. Системні змінні кущі HKEY_LOCAL_MACHINE
  3. Локальні змінні кущі HKEY_CURRENT_USER
  4. Усі змінні середовища та шляхи вказані у файлі Autoexec.bat.
  5. Всі змінні середовища та шляхи вказані у сценарії входу в систему (якщо він є).
  6. Змінні, які використовуються інтерактивно у сценарії або пакетному файлі

У командній оболонці кожен екземпляр Cmd.exe успадковує середовище своєї батьківської програми. Тому можна змінювати змінні в новому середовищі Cmd.exe, що не вплине на середовище батьківської програми.

У таблиці наведено список системних і локальних змінних.

ЗміннаТипОпис
%ALLUSERSPROFILE%ЛокальнаПовертає розташування профілю "All Users".
%APPDATA%ЛокальнаПовертає розміщення даних програм, що використовується за замовчуванням.
%CD%ЛокальнаПовертає шлях до поточної папки.
%CMDCMDLINE%ЛокальнаПовертає рядок команд, за допомогою якого було запущено цей екземпляр Cmd.exe.
%CMDEXTVERSION%СистемнаПовертає номер версії поточних розширень обробників команд.
%COMPUTERNAME%СистемнаПовертає ім'я комп'ютера.
%COMSPEC%СистемнаПовертає шлях до командної оболонки, що виконується.
%DATE%СистемнаПовертає дані. Використовує той самий формат, що й команда date /t
%ERRORLEVEL%СистемнаПовертає код помилки останньої команди. Значення, що не дорівнює нулю, зазвичай вказує на наявність помилки.
%HOMEDRIVE%СистемнаПовертає ім'я диска локальної робочої станції, пов'язаного з основним каталогом користувача. Задається на підставі розташування основного каталогу. Основний каталог користувача вказується в оснастці «Локальні користувачі та групи».
%HOMEPATH%СистемнаПовертає повний шлях до основного каталогу користувача. Задається на підставі розташування основного каталогу. Основний каталог користувача вказується в оснастці «Локальні користувачі та групи».
%HOMESHARE%СистемнаПовертає шлях до загального основного каталогу користувача. Задається на підставі розташування основного каталогу. Основний каталог користувача вказується в оснастці «Локальні користувачі та групи».
%LOGONSEVER%ЛокальнаПовертає ім'я контролера домену, який перевіряв справжність поточної сесії.
%NUMBER_OF_PROCESSORS%СистемнаВизначає кількість процесорів, встановлених на комп'ютері.
%OS%СистемнаПовертає ім'я операційної системи. У разі використання Windows 2000 ім'я операційної системи відображається як Windows_NT.
%PATH%СистемнаВказує шлях пошуку для файлів, що виконуються.
%PATHEXT%СистемнаПовертає список розширень файлів, що розглядаються операційною системою як виконувані.
%PROCESSOR_ARCHITECTURE%СистемнаПовертає архітектуру процесора. Значення: x86, IA64.
%PROCESSOR_IDENTFIER%СистемнаПовертає опис процесора.
%PROCESSOR_LEVEL%СистемнаПовертає номер моделі процесора на комп'ютері.
%PROCESSOR_REVISION%СистемнаПовертає номер модифікації процесора.
%PROMPT%ЛокальнаПовертає параметри командного рядка поточного інтерпретатора. Створюється командою Cmd.exe.
%RANDOM%СистемнаПовертає довільне десяткове число від 0 до 32 767. Створюється командою Cmd.exe.
%SYSTEMDRIVE%СистемнаПовертає ім'я диска, що містить кореневий каталог Windows (тобто системний каталог).
%SYSTEMROOT%СистемнаПовертає розташування системного каталогу Windows XP.
%TEMP% та %TMP%Системна та користь-
тельська
Повертає тимчасові папки, які за замовчуванням використовуються програмами, які доступні користувачам, які ввійшли до системи. Деякі програми вимагають змінну TEMP, інші – змінну TMP.
%TIME%СистемнаПовертає час. Використовує той самий формат, що й команда time /t. Створюється командою Cmd.exe.
%USERDOMAIN%ЛокальнаПовертає ім'я домену, що містить список облікових записів користувачів.
%USERNAME%ЛокальнаПовертає ім'я користувача, що здійснив вхід до системи.
%USERPROFILE%ЛокальнаПовертає розташування профілю для користувача.
%WINDIR%СистемнаПовертає розміщення каталогу операційної системи.

Встановлення змінних середовища

Використовуйте команду setдля створення, видалення або відображення змінних середовища. Команда setзмінює змінні лише серед поточної оболонки.

Щоб відобразити змінну, введіть у командному рядку:

set ім'я_змінної

Щоб додати змінну, введіть у командному рядку:

set variablename=значення

Щоб видалити змінну, введіть у командному рядку:

set ім'я_змінної=

Є можливість використовувати більшість символів як значення змінних, у тому числі пробіл. При використанні спеціальних символів, таких як<, >, &, або ^, перед ними слід поміщати керуючий символ (^) або лапки. При використанні лапок вони включаються до значення змінної, тому що всі символи, що йдуть після знака рівності приймаються за значення змінної. Врахуйте такі приклади.

  • new&name,введіть:

    set varname=new^&name

  • Щоб створити значення змінної "new&name",введіть:

    set varname="new&name"

  • При введенні у командному рядку set varname=new&nameз'являється таке повідомлення про помилку: ""name" is not recognized as an internal or external command, operable program or batch file."

В іменах змінних регістр символів не враховується. Проте, команда setвідображає значення змінної так, як було введено. Можна поєднувати символи нижнього та верхнього регістру в іменах змінних, щоб полегшити сприйняття коду (наприклад, Ім'яКористувача).

Примітки

  • Максимальний розмір окремого змінного середовища становить 8192 байти.
  • Максимальний загальний розмір всіх змінних середовища, включаючи імена змінних та знак рівності, становить 65536 Кбайт.

Підстановка значень у змінні середовища

Щоб мати можливість підставляти значення змінного середовища з командного рядка або зі сценаріїв, слід укласти ім'я відповідної змінної символи відсотків ( % ім'я_змінної% ). Символи відсотків вказують на те, що Cmd.exe повинен звернутися до значень змінних, а не робити порівняльне символ. Після визначення значення для імені змінної, введіть ім'я змінної у символи відсотків. Cmd.exe шукає всі входження імені змінної і замінює його на певне значення змінної. Наприклад, потрібно створити сценарій, що містить різні значення (наприклад, імена користувачів), і потрібно визначити відповідне значення змінного середовища USERNAME для кожного користувача. Для цього слід написати сценарій за допомогою змінної USERNAME, укладеної в лапки. При виконанні сценарію Cmd.exe замінить входження %USERNAME% відповідними значеннями, що позбавить необхідності робити це вручну для кожного користувача. Підстановка значень не є рекурсивною. Cmd.exe перевіряє змінні один раз. Додаткові відомості про встановлення значень у змінні дивись у розділах

 

 

Це цікаво: