2015-01-21 2 views
0

Исключительно я хотел бы извиниться, если вопрос прост, но мне трудно найти часть кода в пакетном файле.Значение/a в командном файле

что такое /a в нижнем коде и в чем его важность и что он делает?

if %first%==1 set /a id=(%3-1) * 3 

здесь я понимаю id переменная для хранения значения и %first% это я получаю значение из этой переменной, но я не мог понять /a.

Спасибо за ваше время

+2

Попробуйте запустить 'set /?' В командной строке. set/a означает использование арифметики - ожидает, что все справа от знака равенства будет числовым. Таким образом, параметр командной строки% 3 должен быть номером для этого уравнения для работы –

+0

@ScottC благодарит за ваше четкое объяснение ... есть ли онлайн-ссылка, доступная для ознакомления с командами, начинающимися с '/'. Если да, вы можете мне предоставить. Благодарю. вы можете ответить на вопрос, я его принимаю. – Siva

ответ

1

Вы можете получить помощь по большинству команд из командной строки, набрав: Имя_команды /?

например.

set /? 
for /? 

http://www.computerhope.com/msdos.htm довольно хороший онлайн помощь для команд DOS.

+0

Спасибо, но в командной строке, когда я набрал 'Set/a', я получил сообщение« Синтаксис команды неверен ». почему это происходит. – Siva

+1

'set/a' нуждается в некоторых параметрах,' set' - это команда. 'set /?' дает вам информацию об использовании, где вы найдете информацию о дополнительных параметрах, которые 'set/a' использует. –

3

set /a ... указывает арифметическое выражение.

СсылкаSet:

Арифметические выражения (SET/а)

Выражение быть оценены может включать в себя следующие операторы:

+ Add    set /a "_num=_num+5" 
    += Add variable  set /a "_num+=5" 
    - Subtract (or unary)set /a "_num=_num-5" 
    -= Subtract variable set /a "_num-=5" 
    * Multiply   set /a "_num=_num*5" 
    *= Multiply variable set /a "_num*=5" 
/ Divide    set /a "_num=_num/5" 
    /= Divide variable set /a "_num/=5" 
    % Modulus   set /a "_num=5%%2" 
    %%= Modulus   set /a "_num%%=5" 
    ! Logical negation 0 (FALSE) ⇨ 1 (TRUE) and any non-zero value (TRUE) ⇨ 0 (FALSE) 
    ~ One's complement (bitwise negation) 
    & AND    set /a "_num=5&3" 0101 AND 0011 = 0001 (decimal 1) 
    &= AND variable  set /a "_num&=3" 
    | OR     set /a "_num=5|3" 0101 OR 0011 = 0111 (decimal 7) 
    |= OR variable  set /a "_num|=3" 
^ XOR    set /a "_num=5^3" 0101 XOR 0011 = 0110 (decimal 6) 
    ^= XOR variable  set /a "_num=^3" 
    << Left Shift. (sign bit ⇨ 0) 
    >> Right Shift. (Fills in the sign bit such that a negative number always remains negative.) 
         Neither ShiftRight nor ShiftLeft will detect overflow. 
    <<= Left Shift variable  set /a _num<<=2 
    >>= Right Shift variable set /a _num>>=2 

    () Parenthesis group expressions set /a "_num=(2+3)*5" 
    , Commas separate expressions set /a "_num=2,_result=_num*5" 

...

Арифметические выражения (SET/A)

Размещение выражения в «кавычках» не является обязательным для простой арифметики, но необходимой для любого выражения с использованием логических операторов.

Любой расчет SET/A, который возвращает дробный результат, будет округленным до ближайшего целого целого.

Примеры:

SET /A "_result=2+4" (=6) 

SET /A "_result=5" (=5) 
SET /A "_result+=5" (=10) 

SET /A "_result=2<<3" (=16) { 2 Lsh 3 = binary 10 Lsh 3 = binary 10000 = decimal 16 } 

SET /A "_result=5%%2" (=1) { 5/2 = 2 + 2 remainder 1 = 1 } 

В пакетном сценарии, оператор модуль (%) должны быть удвоен до (%%).

SET/A будет обрабатывать любую строку символов в выражении как имя переменной среды . Это позволяет выполнить арифметику с переменными окружения , не набирая никаких знаков%, чтобы получить значения .

SET /A _result=5 + _MyVar 

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

_year=1999 Set /a _century=_year/100, _next=_century+1 

Числа все должны быть в пределах от 32 разрядного целого числа числа (-2,147,483,648 до 2,147,483,647) для обработки более крупных номеров используется PowerShell или VBScript. Leading Zero будет указывать Octal

Числовые значения - это десятичные числа, если только префикс 0x для шестнадцатеричных чисел, 0 для восьмеричных чисел.

Так 0х10 = 020 = 16 десятичное

восьмеричное обозначения могут сбивать с толку - все числовые значения, которые начинаются с нулями, рассматриваются как восьмеричные, но 08 и 09 не являются действительными восьмеричное цифры. Например, SET/a _month = 07 вернет значение 7, но SET /a _month = 09 вернет ошибку.

См. An A-Z Index of the Windows CMD command line для получения информации о других командах командной строки Windows.

Смежные вопросы