Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/162: Рейтинг темы: голосов - 162, средняя оценка - 4.90
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
1

Литература, учебники, пособия по CMD/BAT, список команд

22.12.2011, 13:31. Просмотров 33673. Ответов 15

Обращаюсь ко всем.
Например, я слышал студенты писали, что им давали какие-то книги по CMD.
Если не скинуть, так хоть названия дайте. Всему буду рад.
1
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 13:31
Ответы с готовыми решениями:

Литература: статьи, книги, лекции, описания команд по BAT/CMD
Книги: 1. Уильям Р. Станек. Командная строка Microsoft Windows. Справочник администратора 2....

Несколько команд в Cmd через bat
Добрый вечер! Подскажите как через cmd мне сделать несколько операций.На примере: запуск cmd,...

Список команд в bat-файле
Имеется bat файл batch.bat, принимающий аргументы как-то так: batch.bat file.f И имеется другой...

Не могу вызвать командой HELP список команд CMD
Не могу вызвать список команд через help

Batch (CMD/BAT) несколько заданий на CMD/BAT
1.Напишите bat файл на диске с ,который будет искать на всех дисках файлы с расширением...

15
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 15:58  [ТС] 2
gimntut, спасибо, глянул, добавил в избранное - потом прочитаю.

И по-моему есть 2 минуса:
Первый - несущественный: написано что команды "однострочные", а разделены на строки, поэтому тупо скопировать нельзя.
Второй - более существенный, используется прямо тьма сторонних программ, которые надо скачивать, может быть устанавливать.
0
gimntut
882 / 184 / 16
Регистрация: 18.07.2011
Сообщений: 260
22.12.2011, 16:19 3
Цитата Сообщение от Ris Посмотреть сообщение
Первый - несущественный: написано что команды "однострочные", а разделены на строки, поэтому тупо скопировать нельзя.
Для учебника это даже хорошо
Увы, со временем батники начинают обрастать дополнительными программами.
В моём случае, это rar.exe, sed.exe и wget.
Приходится держать их в расшареной папке, чтобы все батники могли получить к ним доступ.
Использование внешних программ выгодно, когда в сети есть разные версии Windows, а батник должен делать работу одинаково хорошо на всех машинах.
Но это специфика системного администрирования.
А вот если писать батники для компьютеров которые между собой не связаны и запускать их будет пользователь, тогда лишние программы зло.
Но это редкость. На этот случай у меня всегда с собой флэшка с набором батников и вызываемых ими программ. Взять тот же sed. Ну нет ни чего подобного в числе стандартных программ.
1
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 20:20  [ТС] 4
Лучший ответ Сообщение было отмечено как решение

Решение

Для учебника это даже хорошо
несогласен, если было бы типа доделайте сами, а это все равно что опечатка.

wget это да. Альтернативы стандартной нет. Вместо rar предпочитаю 7z.
А sed можно заменить стандартными командами, хотя никто не отрицает, что ей легче пользоваться.

Добавлено через 13 минут
Isn, спасибо, это наиболее полная справка по командам и станд. программам, которую я видел.
Но оформление и составление подкачало.

Добавлено через 3 минуты
Мне лично нравиться http://cmdhelp.ru
1.Есть немного общей информация. 2.Почти полная справка по командам, включая отдельную справку по каждой команде. 3.И есть пару статей пример использование некоторых команд.
Пункт 1 и 3 слабо%2ато.

Я тут решил справочку накатать, пока настроение есть. Зацените.

Первая глава. Переменные. Команда SET

Задание переменных

Вручную
Bash
1
2
set x=stroka
set /a y=55
Ввод с клавиатуры
Bash
1
set /p x="BBeduTe cTpoky: "
Типы переменных"

Тип строка
Bash
1
set x=stroka
Ограничение 8184 символа.
Тип число
Bash
1
set /a x=25*5

Ограничение от -2147483647 до 2147483647.



Использование переменных

Вывод значения переменных
Bash
1
echo %x%
Существующие переменные

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.(от 0 до (2^17)-1)
Bash
1
set /a random10=%random%/3277
Выводит случайное число от 0 до 9.
У меня это число по нелепой псевдослучайности цифру секунды
%CD% - раскрывается в строку текущей директории.
%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.
%TIME% - раскрывается в текущую дату, используя формат команды TIME.
%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL.
Уровень ошибки, 0 - это нет ошибки, 1 - это есть ошибка, а другие это номера ошибки.

Чтобы получить полный список переменных и их значений введите команду SET


Операции со строковыми или численными переменными

Соединение 2-ух строковых переменных
Bash
1
2
3
4
set x=Gaz
set y=Prom
echo %x%%y%
(GazProm)
Вывод определенного(ых) символа(ов) из строки
Символы номеруются начиная с 0!

Bash
1
set str=babywka
Вывод 1-ого символа
Bash
1
2
echo %str:~0,1%
(b)
Вывод 3-х символов с конца строки
Bash
1
2
echo %str:~-3%
(wka)
Вывод всей строки кроме 2-ух первых символов
Bash
1
2
echo %str:~2%
(bywka)
Вывод всей строки кроме 2-ух последних символов
Bash
1
2
echo %str:~0,-2%
(babyw)
Вывод 3-х символов начиная с 3
Bash
1
2
echo %str:~2,3%
(byw)
Удаление подстроки из строки
Bash
1
2
echo %str:ba=%
(bywka)
Замена подстроки из строки на другую подстроку
Bash
1
2
echo %str:bab=xlop%
(xlopywka)
Удаление кавычек(") из строки
Bash
1
2
3
set str2="qwerty"
echo %str2:"=% 
(qwert)
В данном случае: если кавычки в начале и конце строки - можно юзать
Bash
1
2
echo %str2:~1,-1%
(qwert)
Существуют 2 способа использовать переменную в переменной, например: вывод n-ого символа

Первый способ с call set
Bash
1
2
call set x=%%str:~%n%,1%%
echo %x%
Второй способ с for и setlocal enabledelayedexpansion
Bash
1
2
3
setlocal enabledelayedexpansion
for /l %%i in (%n%,1,%n%) do (set x=!str:~%%i,1!)
echo %x%
тут неважно что в for писать, главное
Bash
1
set x=!str:~%n%,1!
писать в do
С циклами мы разберемся в следующей статье.
Но, пока уточню: если код второго способа юзать в пакетном файле (BATнике), то вместо %i юзаем %%i.


Операции с числовыми переменными

Увеличивание на единицу
Bash
1
set /a x+=1
Увеличивание в 2 раза
Bash
1
set /a x+=%x%
аналогично
Bash
1
set /a x*=2
Возведение в квадрат
Bash
1
set /a x*=%x%
Возведение в куб
Bash
1
set /a x=%x%*%x%*%x%
Деление
Деление в CMD является целочисленным!(то есть делится до целого числа)
Bash
1
2
3
4
set /a x=15
set /a y=4
set /a xy=%x%/%y%
(3)
Сложение
Bash
1
2
3
4
set /a x=5
set /a y=-6
set /a xy=%x%+%y%
(5+(-6)=5-6=-1)
Вычитание
Bash
1
2
3
4
set /a x=5
set /a y=-6
set /a xy=%x%-%y%
(5-(-6)=5+6=11)
Вычисление остатка
Bash
1
set /a xy=%x% "%" %y%
Унарные операторы
(Не знаю, как они называются)

Bash
1
set /a y="!"%x%
дает результат(%y%) 1, если переменная(%x%) равна 0, и 0 (%y%) в любых других случаях
Bash
1
2
3
4
5
6
7
Например
set /a x=5
set /a y="!"%x%
(0)
set /a x=0
set /a y="!"%x%
(1)
Bash
1
set /a y="~"%x%
дает результат -1-%x% (%y%)
Например
Bash
1
2
3
4
5
6
set /a x=5
set /a y="~"%x%
(-1-5=-(1+5)= -6)
set /a x=-3
set /a y="~"%x%
(-1-(-3)=-1+3=3-1= 2)
Отрицание
Bash
1
set /a y="-"%x%
дает результат 0-%x% (%y%)
Например
Bash
1
2
3
4
5
6
set /a x=5
set /a y="-"%x%
(-5)
set /a x=-3
set /a y="-"%x%
(3)
Двоичные операторы
Bash
1
2
3
4
set x=3
(в двоичной системе счисления - 0011)
set y=5
(в двоичной системе счисления - 0101)
Побитовое И (AND)

Побитовое И — это бинарная операция, действие которой эквивалентно применению логического И к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов.
Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.

Bash
1
2
set /a xy=%x%"&"%y%
(1, в двоичной системе счисления - 0001)
Побитовое ИЛИ (OR)

Побитовое ИЛИ — это бинарная операция, действие которой эквивалентно применению логического ИЛИ к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов.
Другими словами, если оба соответствующих бита операндов равны 0, двоичный разряд результата равен 0; если же хотя бы один бит из пары равен 1, двоичный разряд результата равен 1.

Bash
1
2
set /a xy=%x%"|"%y%
(7, в двоичной системе счисления - 0111)
Побитовое исключающее ИЛИ (XOR)

Побитовое исключающее ИЛИ (или побитовое сложение по модулю два) — это бинарная операция, действие которой эквивалентно применению логического исключающего ИЛИ к каждой паре битов, которые стоят на

одинаковых позициях в двоичных представлениях операндов.
Другими словами, если соответствующие биты операндов различны, то двоичный разряд результата равен 1; если же биты совпадают, то двоичный разряд результата равен 0.

Bash
1
2
set /a xy=%x%"^"%y%
(6, в двоичной системе счисления - 0110)
К битовым операциям также относят битовые сдвиги. При сдвиге значения битов копируются в соседние по направлению сдвига.
Различают сдвиг влево (в направлении от младшего бита к старшему) и вправо (в направлении от старшего бита к младшему).
При логическом сдвиге значение последнего бита по направлению сдвига теряется (копируясь в бит переноса), а первый приобретает нулевое значение.

Двоичный арифметический сдвиг

Арифметический сдвиг аналогичен логическому, но значение слова считается знаковым числом, представленным в дополнительном коде.
Так, при правом сдвиге старший бит сохраняет свое значение. Левый арифметический сдвиг идентичен логическому.

Вправо
Bash
1
2
3
4
5
6
7
8
9
10
set /a xy=%x%">>"1
(1, в двоичной системе счисления - 0011->0001)
set /a xy2=%y%">>"1
(2, в двоичной системе счисления - 0101->0010)
set /a n=13
(в двоичной системе счисления - 1101)
set /a xn=%n%">>"2
(3, в двоичной системе счисления - 1101->0011)
set /a my=-%y%">>"1
(-3, в двоичной системе счисления - 1011(-5)->1101(-3))
Влево
Bash
1
2
3
4
5
6
7
8
set /a xy=%x%"<<"1
(6, в двоичной системе счисления - 0011->0110)
set /a xy2=%y%"<<"1
(10, в двоичной системе счисления - 0101->1010)
set /a xy3=%y%"<<"4
(80, в двоичной системе счисления - 0101->1010000)
set /a my=-%y%"<<"1
(-10, в двоичной системе счисления - 1011(-5)->10110(-10))
Максимальный размер отдельной переменной среды составляет 8192 байта.(у меня выходило только 8184, наверное это вместе с названием...)
Максимальный общий размер всех переменных среды, включая имена переменных и знак равенства, составляет 65 536 Кбайт.

И я забыл, про 8-ричную и 16-ричную систему счисления в CMD

Системы счисления

Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел, и 0 для восьмеричных чисел. Например, числа 0x12, и 022 обозначают десятичное число 18.

Обратите внимание на запись восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в восьмеричной системе исчисления цифры 8 и 9 не используются.

Восьмеричная система счисления
Bash
1
2
set /a x=022
(Это 22 в восьмеричной системе счисления, и 18 в десятичной)
Можно производить все операции, также как и с десятеричными числами.
Но после задания значения переменной, значение хранится в десятичной системе счисления.
Например, сложение
Bash
1
2
set /a xy=022+07
(Это 22+7=31 в восьмеричной системе счисления, и 31 в десятичной)
Шестнадцатеричная система счисления
Bash
1
2
set /a x=0x3A
(Это 3A в восьмеричной системе счисления, и 58 в десятичной)
Вычитание
Bash
1
2
set /a xy=0x3A-0x66
(Это 3A-66=-54 в восьмеричной системе счисления, и -44 в десятичной)
13
22.12.2011, 20:20
wildwolf007
17 / 26 / 0
Регистрация: 11.10.2011
Сообщений: 379
Завершенные тесты: 1
22.12.2011, 20:34 5
Спасибо. Для новичков просто супер да и для себя разобрал кое-какие вопросы. Спасибо.
1
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 22:10  [ТС] 6
wildwolf007, спасибо.
Для новичков просто супер да и для себя разобрал
самокритично
Все мы новички. Или новички или про. Про в CMD я только 1 видел(Delphiist).
0
gimntut
882 / 184 / 16
Регистрация: 18.07.2011
Сообщений: 260
23.12.2011, 06:57 7
Лучший ответ Сообщение было отмечено как решение

Решение

Добавлю от себя.

Сохранение в переменной вывода программы
К сожаление, передача вывода программ на вход команды set не работает:
Bash
1
2
echo 1|set /p AA=""
set AA
Поэтому можно воспользоваться временным сохранением в файл:
Bash
1
2
3
4
echo 1> 0.tmp
set /p AA="" <0.tmp
del 0.tmp
echo %AA%
Примеры использования
Узнать динамически генерируемое имя архива WinRar:
Bash
1
2
3
4
rar a -z%Comment% -p%p% "-ag yyyy-mm-dd[n]" %OutPath%\%arhivename%.%ext% @%FileList% >rar.log.tmp
for /f "tokens=2*" %%I in ('find /i "Creating archive" ^<rar.log.tmp') do @echo %%J >rarfilename.tmp
set /p rarfilename="" <rarfilename.tmp
del rarfilename.tmp
Узнать имя последнего изменённого файла в папке:
Bash
1
2
3
4
dir /b /a-d /o-d *.* >%temp%\0.tmp
set /p lastfile="" <%temp%\0.tmp
del %temp%\0.tmp
dir /a-d "%lastfile%"| find /i "%lastfile%"
4
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 01:04  [ТС] 8
gimntut, молодец, я совсем про это забыл.

Хотя в последнем примере я бы юзал так:
Bash
1
2
3
4
5
dir /a-d /o-d *.* | more +5 >%temp%\0.tmp
set /p lastfile="" <%temp%\0.tmp
del %temp%\0.tmp
echo "%lastfile%"
pause
Нашел в файле ntcmds.chm такую инфу:

Цитата Сообщение от Использование операторов перенаправления команд (Click here)

Операторы перенаправления команд используются для изменения местоположений потоков ввода и вывода команд, заданных по умолчанию, на какие-либо другие. Местоположение потоков ввода и вывода называется дескриптор.

В следующей таблице описаны операторы перенаправления потоков ввода и вывода команд.


Оператор перенаправления, описание

> Записывает данные на выходе команды вместо командной строки в файл или на устройство, например, на принтер.

< Читает поток входных данных команды из файла, а не с клавиатуры.

>> Добавляет выходные данные команды в конец файла, не удаляя при этом существующей информации из файла.

>& Считывает данные на выходе одного дескриптора как входные данные для другого дескриптора.

<& Считывает входные данные одного дескриптора как выходные данные другого дескриптора.

| Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

По умолчанию, входные данные команды (дескриптор STDIN) отсылаются с клавиатуры интерпретатору команд Cmd.exe, далее Cmd.exe отправляет выходные данные команды (дескриптор STDOUT) в окно командной строки.


В следующей таблице представлены доступные дескрипторы.

дескриптор Числовой эквивалент дескриптора Описание
STDIN 0 Ввод с клавиатуры
STDOUT 1 Вывод в окно командной строки
STDERR 2 Ошибка вывода в окно командной строки
UNDEFINED 3-9 Эти дескрипторы определяются индивидуально для каждой прикладной программы.

Номера от 0 до 9 представляют первые 10 дескрипторов. Для запуска программы и перенаправления любого из 10 дескрипторов используется интерпретатор команд Cmd.exe. Для задания требуемого дескриптора перед оператором перенаправления введите его номер. Если дескриптор не определен, то по умолчанию оператором перенаправления ввода «<» будет ноль (0), а оператором перенаправления вывода «>» будет единица (1). После ввода оператора «<» или «>» необходимо указать, откуда читать и куда записывать данные. Можно задать имя файла или любой из существующих дескрипторов.

Для задания перенаправления в существующие дескрипторы используется амперсанд (&), затем номер требуемого дескриптора (например, &номер_дескриптора). Например, для перенаправления дескриптора 2 (STDERR) в дескриптор 1 (STDOUT) введите:

1<&2


Дублирование дескрипторов

Оператор перенаправления «&» дублирует выходные или входные данные с одного заданного дескриптора на другой заданный дескриптор. Например, для отправки выводных данных команды dir в файл File.txt и отправки ошибки вывода в файл File.txt введите:

Bash
1
dir>c:\file.txt 2>&1
При дублировании дескриптора происходит копирование всех его исходных характеристик. Например, если дескриптор доступен только для записи, то все его дубликаты будут доступны только для записи. Нельзя продублировать дескриптор с доступом только для чтения в дескриптор с доступом только для записи.


Перенаправление ввода команд (<)

Для перенаправления ввода команд с цифровой клавиатуры на файл или на устройство используйте оператор «<». Например, для ввода команды sort из файла List.txt введите:

Bash
1
sort<file.txt
Содержимое файла File.txt появится в командной строке в виде списка в алфавитном порядке.

Оператор «<» открывает заданное имя файла с доступом только для чтения. Поэтому с его помощью нельзя записывать в файл. Например, при запуске программы с оператором <&2 все попытки прочитать дескриптор 0 ни к чему не приведут, так как изначально он был открыт с доступом только для записи.

Примечание

Дескриптор 0 задан по умолчанию для оператора перенаправления ввода «<».


Перенаправление вывода команд (>)

Выходные данные практически всех команд высвечиваются в окне командной строки. Даже команды, выводящие данные на диск или принтер, выдают сообщения и запросы в окне командной строки.

Для перенаправления вывода команд из окна командной строки в файл или на устройство применяется оператор «>». Этот оператор используется с большинством команд. Например, для перенаправления вывода команды dir в файл Dirlist.txt введите:

Bash
1
dir>dirlist.txt
Если файл Dirlist.txt не существует, интерпретатор команд Cmd.exe создаст его. Если файл существует, Cmd.exe заменит информацию в файле на данные, полученные от команды dir.

Для запуска команды netsh routing dump и последующей отправки результатов ее работы в Route.cfg введите:

Bash
1
netsh routing dump>c:\route.cfg
Оператор «>» открывает заданный файл с доступом только для записи. Поэтому с помощью данного оператора файл прочитать нельзя. Например, при запуске программы с оператором перенаправления <&0 все попытки записать дескриптор 1 ни к чему не приведут, так как изначально дескриптор 0 был открыт с доступом только для чтения.

Примечание.

Дескриптор 1 задан по умолчанию для оператора перенаправления вывода «>».


Использование оператора «<&» для перенаправления ввода и дублирования

Для использования оператора перенаправления ввода необходимо, чтобы задаваемый файл уже существовал. Если файл для ввода существует, то интерпретатор команд Cmd.exe открывает его с доступом только для чтения и его содержимое отправляет в команду так, как если бы это был ввод с цифровой клавиатуры. При задании дескриптора интерпретатор команд Cmd.exe дублирует его в дескриптор, существующий в системе.

Например, для считывания файла File.txt на вход в дескриптор 0 (STDIN) введите:

Bash
1
<file.txt
Для открытия файла File.txt, сортировки его содержимого и последующей отправки в окно командной строки (STDOUT) введите:

Bash
1
sort<file.txt
Для того чтобы найти файл File.txt и перенаправить дескриптор 1 (STDOUT) и дескриптор 2 (STDERR) в Search.txt введите:

Bash
1
findfile file.txt>search.txt 2<&1
Для дублирования определенного пользователем дескриптора 3 в качестве входной информации для дескриптора 0 (STDIN) введите:

<&3


Использование оператора «>&» для перенаправления ввода и дублирования

При перенаправлении вывода в файл и задании существующего имени файла интерпретатор команд Cmd.exe открывает файл с доступом только для записи и переписывает его содержимое. Если дескриптор задан, интерпретатор команд Cmd.exe дублирует файл в существующий дескриптор.

Для дублирования определенного пользователем дескриптора 3 в дескриптор 1 введите:

>&3

Для перенаправления всех выходных данных, включая выходные данные дескриптора 2 (STDERR), команды ipconfig в дескриптор 1 (STDOUT) и последующего перенаправления выходных данных в Output.log введите:

Bash
1
ipconfig.exe>>output.log 2>&1

Использование оператора «>>» для добавления вывода

Для добавления выходных данных команды в конец файла без потери хранящейся в нем информации используется двойной символ «больше» (>>). Например, следующая команда добавляет список каталогов, созданный командой dir, в файл Dirlist.txt:

Bash
1
dir>>dirlist.txt
Для добавления выходных данных команды netstat в конец файла Tcpinfo.txt введите:

Bash
1
netstat>>tcpinfo.txt

Использование оператора канала (|)

Оператор канала «вертикальная линия» (|) забирает выходные данные одной команды (по умолчанию STDOUT) и направляет их на вход другой команды (по умолчанию STDIN). Например, следующая команда сортирует каталог:

Bash
1
dir | sort
В данном примере обе команды запускаются одновременно, но команда sort приостанавливает работу до получения выходных данных команды dir. Команда sort использует выходные данные команды dir в качестве своих входных данных, а затем свои выходные данные отправляет в дескриптор 1 (STDOUT).


Комбинирование команд с операторами перенаправления

Комбинируя команды-фильтры с другими командами и именами файлов, можно создавать команды на заказ. Например, для сохранения имен файлов, содержащих строку «LOG», используется следующая команда:

Bash
1
dir /b | find "LOG" > loglist.txt
Выход команды dir отсылается в команду-фильтр find. Имена файлов, содержащие строку «LOG», хранятся в файле Loglist.txt в виде списка (например, NetshConfig.log, Logdat.svd и Mylog.bat).

При использовании более одного фильтра в одной команде их необходимо отделять с помощью канала (|). Например, следующая команда ищет в каждом каталоге диска C файлы, в названии которых присутствует строка «Log», и выводит их постранично на экран:

Bash
1
dir c:\ /s /b | find "LOG" | more
Наличие канала (|) указывает Cmd.exe, что выход команды dir нужно отправить команде-фильтру find. Команда find выбирает только те имена файлов, в которых содержится строка «LOG». Команда more выводит на экран имена файлов, полученные командой find с паузой после заполнения каждого экрана. Дополнительные сведения о командах-фильтрах см. в разделе Использование фильтров.
А CMD выдает "Непредвиденное появление: <&."

На этом форуму нашел 2 ссылки:
http://www.rsdn.ru/article/winshell/batanyca.xml
http://www.rsdn.ru/article/winshell/NTCommandProcessor.xml

Добавлено через 1 минуту
еще одну:
http://www.windowsfaq.ru/content/category/3/19/57/
2
Jinu
9 / 9 / 3
Регистрация: 16.02.2011
Сообщений: 27
21.05.2012, 10:30 9
1
2
0
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27983 / 15710 / 965
Регистрация: 15.09.2009
Сообщений: 67,815
Записей в блоге: 78
24.05.2012, 14:32 10
Лучший ответ Сообщение было отмечено как решение

Решение

Название: Командная строка Microsoft Windows. Справочник администратора
Автор: Уильям Р. Станек
3
HOST_ERROR
194 / 33 / 3
Регистрация: 12.05.2010
Сообщений: 361
11.07.2012, 02:45 11
Цитата Сообщение от Leningradeс Посмотреть сообщение
Да и если знаете читабельную литературу по батникам\cmd, то буду признателен если скинете ссыль или название (полное).
Самая лучшая литература это сама помощь cmd
напиши HELP
и далее описание команды и как ею пользоваться можно получить так: КОМАНДА /?
0
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
21.09.2012, 22:04 12
Цитата Сообщение от Ris Посмотреть сообщение
Вычисление остатка
set /a xy=%x% "%" %y%
Что-то выдает синтаксическую ошибку.

Правильные варианты будут такие:
Bash
1
set /a xy=%x%%%y%
(процент без пробелов).
При просмотре логики вычислений в интерпретаторе без отключения Эха - вторая переменная визуально не раскрывается, хотя функционально все работает верно.
Чтобы это обойти, можно воспользоваться удвоением %
Bash
1
set /a xy=%x% %% %y%
(можно и без пробелов).
0
Eva Rosalene
Ladybug
4124 / 1598 / 304
Регистрация: 06.01.2013
Сообщений: 4,193
Завершенные тесты: 2
08.01.2013, 21:45 13
Помощь по всем командам вашей версии Windows / DOS

Развврнуть код...
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@echo off
setlocal enabledelayedexpansion
if exist "help.txt" (del help.txt)
help>>help.txt
del help2.txt
FOR /F "usebackq" %%a IN ("help.txt") DO (
 set string=%%~a
 if "!string:~0,1!"=="A" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="B" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="C" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="D" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="E" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="F" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="G" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="H" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="I" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="J" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="K" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="L" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="M" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="N" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="O" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="P" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Q" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="R" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="S" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="T" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="U" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="V" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="W" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="X" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Y" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Z" (echo !string!>>help2.txt)
)
del help.txt
FOR /F "usebackq tokens=1,2*" %%a IN ("help2.txt") DO (
 echo ====================>>help.txt
 echo HELP FOR %%a>>help.txt
 echo %%a
 %%a /?>>help.txt
)
echo OK
pause>nul
timeout /t 1 /NOBREAK>nul

После запуска появятся два текстовых файла.
По ходу действия программа будет писать вам, какая команда сейчас обрабатывается.
HELP2 - список доступных вам команд.
HELP - собственно справка по каждой из них.
0
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
12.02.2013, 01:23 14
Памятка. Системные команды

Описание
Команда
Описание
Команда
Администрированиеcontrol admintoolsПапка обменаclipbrd
Администратор источников данныхodbccp32.cplПроверка подписи файлаsigverif
Восстановление системных файловsfc /scannowПрограмма сетевого клиента SQLcliconfg
Дефрагментация дисковdfrg.mscПроизводительностьperfmon.msc
Диспетчер проверки драйверовverifierПросмотр событийeventvwr.msc
Диспетчер служебных программutilmanПодключение к рабочему столуmstsc
Групповая политикаgpedit.mscРезультатирующая политикаrsop.msc
Dr. Watsondrwtsn32Редактор системных файловsysedit
Запросы операторов съемных ОЗУntrnsoprq.mscРеестрregedit
Защита БД учетных записейsyskeyРедактор личных символовeudcedit
IExpresslexpressСертификатыcertrngr.msc
Инфраструктура управленияwmimgmt.mscСлужба диагностики DirectXdxdiag
Проверка дисковchkdskСлужбыservices.msc
Консоль управленияdcomcnfgСлужбы компонентовdcomcnfg
Локальные параметры безопастностиsecpol.mscСлужба индексированияciadv.msc
Локальные пользователи и группыlusrmgr.mscСъемные ЗУntmsmgr.msc
Мастер передачи файлов BluetoothfsquirtТелнетtelnet
Настройка системыmsconfigУправление дискамиdiskmgmt.msc
Назначенные заданияcontrol schedtasksУправление рабочим столомmstscoo
Общие папкиfsmgmt.mscУправление компьютеромcompmgmt.msc
Общие ресурсы DDEddeshareУдаление вредоносных программmrt.exe

Некоторые из не работают в ОС Windows ver. выше XP или при отсутствии в системе необходимых компонентов.
1
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
12.02.2013, 01:26 15
cpl-файлы
Автор обзора: andi

В операционной системе Windows есть множество полезностей, о которых не все знают. Про одну такую «полезняшку» сейчас и расскажу. Речь будет идти о так называемых cpl-файлах. Возможно, это не говорит ни о чём. Однако с уверенностью могу сказать, что многими из этих цэпээлек пользуются регулярно.

Итак, нажимаем сочетание клавиш Win + R (Win — это кнопочка между Ctrl и Alt), либо жмём Пуск → Выполнить, и вводим одну из следующих команд:

основные:

appwiz.cpl — установка/удаление программ
desk.cpl — свойства экрана
firewall.cpl — брэндмауэр
inetcpl.cpl — свойства интернет эксплорера
intl.cpl — язык и региональные стандарты
main.cpl — свойства мыши
mmsys.cpl — свойства: звуки и аудиоустройства
ncpa.cpl — сетевые подключения (отсюда можно управлять сетевыми адаптерами)
netsetup.cpl — мастер настройки сети
nusrmgr.cpl — учётные записи пользователей
sysdm.cpl — свойства системы
timedate.cpl — установка даты/времени
wscui.cpl — центр обеспечения безопасности
wuaucpl.cpl — автоматическое обновление

редко используемые

access.cpl — специальные возможности
hdwwiz.cpl — мастер установки оборудования
joy.cpl — игровые устройства
odbccp32.cpl — администратор источников данных ODBC
powercfg.cpl — управление питанием
sapi.cpl — свойства речи
telephon.cpl — опции телефона и модема

особые (зависят от установленного ПО)

ALSNDMGR.CPL — аудио-конфигурация АС 97
javacpl.cpl — панель настроек java
nvcpl.cpl — панель управления NVIDIA
nvtuicpl.cpl — управление рабочими столами (утилита от NVIDIA)
PhysX.cpl — свойства PhysX (утилита от NVIDIA)
RTSndMgr.cpl — настройка звуковых эффектов от Gigabyte
3
Dragokas
Эксперт WindowsАвтор FAQ
17093 / 7148 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
07.05.2013, 01:22 16
Лучший ответ Сообщение было отмечено как решение

Решение

По материалам http://pers.narod.ru/soft/batfiles.html


В этой статье:
  • Определение и назначение командного файла
  • Проверка, существует ли файл
  • Проверка кода завершения
  • Сравнение двух строк
  • Команды REM, ECHO, PAUSE, IF, ERRORLEVEL, SET, GOTO, CALL, SHIFT, FOR, CHOICE
  • Знак @

1. Определение командного файла.

Командные (пакетные) файлы - особая категория исполняемых файлов.

Расширение: *.bat (от англ. batch - "пакет", "группа"). Запуск командного файла осуществляется так же, как запуск исполняемой программы, то есть, указывается имя файла и, если требуется, параметры.
Назначение: BAT-файлы служат для организации взаимодействия пользователей с прикладными программами.
Состав: текст, который интерпретируется командным процессором. Строки этого текста могут представлять собой:
  • внешние или внутренние команды ОС;
  • обращения к исполняемым программам *.COM или *.EXE, и вызовы других командных файлов;
  • команды для управления выдачей на экран, а также для организации ветвлений и циклов;
  • метки, на которые совершается переход при выполнении заданного в файле условия.
Каждая команда находится на отдельной строке.

2. Команды пакетной обработки.

а) REM комментарий в тексте файла. Обычно используют, чтобы временно убрать из текста какую-либо команду. Формат: REM [любая строка]

б) ECHO вывод на экран сообщений. Формат: ECHO [ON или OFF или Сообщение]
Параметры ON и OFF включают и выключают выдачу на экран системных сообщений ("эха"). Команда ECHO OFF используется, чтобы не "засорять" экран при исполнении BAT-файла. Произвольная строка после ECHO понимается как сообщение и без изменений выводится на экран. Пустая строка обозначается одной точкой. Примеры:

Bash
1
echo.
Перейти к следующей строке;
Bash
1
echo Программа  не  найдена!
Выдает на экран сообщение "Программа не найдена!".

в) @. Может быть только первым символом строки и подавляет ее выдачу на экран. Используется только в пакетном режиме.
Пример:
Bash
1
@echo off
Выключаем "эхо"; из-за символа @ сама команда echo off тоже не выводится на экран; этой строкой обычно начинаются командные файлы.

г) PAUSE приостанавливает вывод на экран, выводит сообщение "Нажмите любую клавишу..." и ждет нажатия любой клавиши. Параметров не имеет.

д) IF позволяет проверять условие и выполнять ветвление в зависимости от результата проверки.

Общий вид команды:
IF [NOT] [условие] [действие], где "действие" - любая команда, выполняемая, если истинно условие. Условие записывается в одной из трех форм, поэтому команда IF имеет три формата.

Формат 1. Проверка кода завершения последней перед оператором IF команды. Используется конструкция следующего вида: IF ERRORLEVEL число

Любая программа может выработать в момент своего окончания собственный код завершения, который доступен другим программам через переменную с именем ERRORLEVEL. Большинство команд и программ при нормальном завершении устанавливают errorlevel=0. Задав условие if errorlevel 1, Вы определите, что оно будет выполнено, если программа вырабатывает код завершения больший, либо равный 1.

Bash
1
2
format a:
if errorlevel 1 echo Форматирование прошло не безупречно!
если программа format установила errorlevel больше нуля,сообщить об ошибке;

Формат 2. Проверка наличия файла в каталоге. Оператор IF имеет вид: IF EXIST имя файла

Команда проверяет, существует ли файл с заданным именем. При обнаружении файла условие считается выполненным. Можно использовать маску - тогда условие выполнено, если найден хотя бы один подходящий файл.

Bash
1
if exist c:\autoexec.bat type c:\autoexec.bat
если в головном каталоге диска c: есть файл autoexec.bat, вывести его на экран;

Bash
1
if not exist c:\WORK\*.* echo Нет файлов!
если в каталоге WORK нет ни одного файла, вывести соответствующее сообщение;

Формат 3. Сравнение двух строк. Оператор имеет вид: IF [строка_1]==[строка_2]

Условие выполняется, если строки 1 и 2 совпадают. Чтобы застраховаться от случая, когда одна из строк оказывается пустой, обе строки заключают в одинаковые символы, например, в квадратные скобки.

Любое из этих трех условий может задаваться со знаком логического отрицания NOT. При этом истинность условия трактуется в обратном смысле. Примеры:

Bash
1
if %A%==Yes cls
если переменная с именем A равна строке 'Yes', очистить экран.

Аналогично команда IF может использоваться из командной строки.

е) GOTO позволяет передавать управление на заданную метку Формат команды: GOTO метка

Метка начинается со знака : Пример:

Bash
1
2
3
4
5
6
7
if  %A%==Yes goto Clear
goto Not_Clear
 
:Clear
cls
 
:Not_Clear
Если переменная A совпадает со строкой Yes, перейти на метку Clear и очистить экран. В противном случае пропустить очистку экрана.

ж) CALL осуществляет вызов одного командного файла из другого с последующим возвратом в вызывающий файл. Формат команды: CALL [имя файла]

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

Вызывающий командный файл: (example.bat)

Bash
1
2
3
4
@echo off
echo Файл запущен!
call version
echo Продолжаем!
Вызываемый командный файл: (version.bat)

Bash
1
2
3
4
@echo off
echo Ваша версия операционной системы:
ver
pause
example.bat вызывает version.bat, после выполнения которого вновь получает управление.

з) Переменные в командных файлах используются для обмена информацией между отдельными командами. Существуют два их вида:

1) переменная, определяемая в цикле. Ее имя состоит символа процента (в старых версиях DOS/Windows - двух символов) и последующих букв, например, %A. Набор значений, которые последовательно принимает такая переменная, задается при ее определении в команде for (см. ниже).

2) переменная окружения. Она определяется внутренней командой DOS вида

Bash
1
SET имя=значение
где имя и значение - произвольные строки, и в течение всего сеанса работы хранится в специальной области памяти, называемой "системным окружением". Системное окружение управляется командным интерпретатором command.com. Чтобы использовать переменную окружения в командном файле нужно ее имя заключить в символы процента %, например, командами

Bash
1
2
set weekday=sunday
echo %weekday%
переменной с именем weekday присваивают значение sunday и выводят ее значение на экран командой ECHO.
Для удаления переменной из окружения используют строку вида
Bash
1
set имя=
Для просмотра окружения можно использовать команду SET без параметров.

В DOS и Windows, как правило, используются следующие стандартные переменные окружения:
  • winbootdir Главный каталог ОС Windows (в версиях NT/2000 может называться SystemRoot)
  • COMSPEC Полное имя текущего командного процессора
  • PROMPT Вид строки приглашения диалогового режима
  • TEMP Каталог для временных файлов (иcпользуется также TMP)
  • PATH Список путей, по которым ищутся исполняемые программы, если путь не указан при запуске программы. По умолчанию программа ищется сначала в текущей папке, затем в папках, перечисленных в PATH. Пути разделяются символом ;

и) FOR обеспечивает циклическое выполнение команд.
Формат:
Bash
1
FOR переменная IN (набор) DO действие
Понятие переменной определено выше.
Набор - это одна или несколько строк, разделенных пробелами или запятыми. Чаще всего в качестве элементов набора выступают имена файлов или маски.
Действие - любая допустимая команда. Цикл работает следующим образом: переменная последовательно принимает значения элементов набора и они подставляются в текст команды.
Примеры:

Bash
1
For %a in (*.txt) do copy %a con
Переменной %%a последовательно присваиваются имена файлов с расширением txt из текущего каталога и каждый файл выводится на экран.

Bash
1
for %r in (*.*) do if exist a:\%r echo %r есть на диске a:
Команда перебирает файлы текущей директории и выясняет, есть ли на диске a: файл с таким же именем. Если такой файл существует, печатается сообщение. Вместо переменной %%r в команде ECHO каждый раз подставляется очередное имя файла.

Bash
1
for %z in (0,1,2,3,4,5,6,7,8,9) do if %z==%test% echo z=test=%z
Если переменная %z, принимающая значения цифр от 0 до 9, совпадает с переменной окружения test, печатается сообщение.

FOR может использоваться и в командной строке, например, для многократного выполнения команды, в которой нельзя использовать маску. Пример:

Bash
1
FOR %A IN (*.txt) DO TYPE %A
Все найденные в текущей директории файлы с расширением TXT последовательно выводятся на экран.

к) Параметры командного файла.

При запуске из командной строки командному файлу могут быть переданы параметры. Они разделяются пробелами и количество их не может превышать девяти. Изнутри пакетного файла параметры доступны через строки вида %0, %1, ..., %9, где %0 - имя самого командного файла, %1 - имя первого параметра и так далее. Например, мы запускаем командный файл MOVA.BAT командой mova.bat *.tmp *.txt *.doc

После запуска параметр %0 равен строке "mova.bat", параметр %1 - строке "*.tmp" и т. д.
Наш командный файл должен перемещать файлы, подходящие под переданные ему маски, на диск a:. Для первого параметра это легко сделать двумя командами:
Bash
1
2
copy %1 a:\%1
del %1
Первая копирует файлы на диск a:, вторая уничтожает источник копирования. Для второго параметра мы могли бы повторить те же команды, подставив в них %2 вместо %1. Но программа сразу же становится нерациональной, тем более, что число параметров заранее неизвестно.
Помочь нам может команда SHIFT, которая сдвигает параметры командного файла на один влево. После применения SHIFT параметру %0 присваивается старое значение %1, в нашем случае это строка "*.tmp", а параметр %1 принимает значение "*.txt". Теперь этими же двумя командами мы можем обработать любое число параметров. Позаботившись об условии выхода из программы, получаем ее окончательный текст:

Bash
1
2
3
4
5
6
@echo off
:LOOP
copy %1 a:\%1
del %1
shift
if not [%1]==[] goto LOOP
Благодаря команде SHIFT мы каждый раз обращаемся лишь к первому из переданных параметров и правильность работы не зависит от числа переданных параметров. Если очередная строка с маской не пуста, оператор goto LOOP передает управление к началу программы.

л) Дополнительные средства для написания командных файлов.

Рассмотренные выше команды пакетной обработки позволяют организовать автоматический запуск программ и обработку файлов. Не хватает лишь возможностей пользователя влиять на этот процесс, в частности, возможности выполнять действия в зависимости от выбора с клавиатуры.

В состав большинства версий DOS/Windows включена внешняя команда choice, служащая для выбора действия. Формат команды:

CHOICE [/C:клавиши] [/N] [/T:выбор,время] [сообщение]

Здесь сообщение - любая строка текста, клавиши - список буквенных обозначений клавиш, допустимых для выбора. По умолчанию прописные и строчные буквы не различаются, а если список клавиш не указан, принимается /C:YN. Параметр /N запрещает вывод после сообщения списка клавиш и знака вопроса, а после параметра /T могут быть указаны выбор, принимаемый при отсутствии ввода с клавиатуры и время в секундах, через которое он будет сделан.

Результат работы команды - установка значения ERRORLEVEL равным порядковому номеру в списке выбранной клавиши. Например, после ввода команды

Bash
1
choice /c:01 /n /t:0,5 Продолжить?(1-да,0-нет)
значение ERRORLEVEL будет установлено в 1 при нажатии клавиши 0 или отсутствии ввода с клавиатуры в течении 5 секунд,
а при нажатии клавиши 1 программа установит значение ERRORLEVEL, равное 2.
4
07.05.2013, 01:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2013, 01:22

Запись команд из одного bat-файла в другой bat-файл
Предположил что: в 1 bat: echo echo my_text &gt;&gt; my_file &gt;&gt; new.bat и хотел что бы получилось так...

Литература по windows 7, учебники и пособия для начинающих администраторов
Доброго времени суток Нигде не могу скачать Microsoft Windows 7. Полное руководство, Пол...

Пособия и литература по сетям
ребят а подскажите пожалуйста какие-нибудь хорошие книжки, учебники или пособия по компьютерным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru