cmd.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 13:34:55 +0200
changeset 1911 870693ce6ff0
parent 1905 fba288d59662
child 1912 8b81a8f0f692
permissions -rw-r--r--
Fix my RST article style by 'check-format-policy' target.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
1334
9bf0d5a1f0cf Include common header with quick links.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1075
diff changeset
     2
.. include:: HEADER.rst
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
====================
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
 CMD Windows shell.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
====================
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
.. contents::
1905
fba288d59662 Include only local subsections into TOC. This prevent duplication of
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1334
diff changeset
     8
   :local:
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
Quoting.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
========
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
 * Arguments are delimited by white space, which is either a space or a tab.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
 * A string surrounded by double quotation marks is interpreted as a single
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
   argument.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
 * A double quotation mark preceded by a backslash, \", is interpreted as a
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
   literal double quotation mark.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
 * Backslashes are interpreted literally, unless they immediately precede a
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
   double quotation mark.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
 * If an even number of backslashes is followed by a double quotation mark,
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
   then one backslash (\) is placed in the argv array for every pair of
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
   backslashes (\\), and the double quotation mark (") is interpreted as a
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
   string delimiter.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
 * If an odd number of backslashes is followed by a double quotation mark,
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
   then one backslash (\) is placed in the argv array for every pair of
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
   backslashes (\\) and the double quotation mark is interpreted as an escape
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
   sequence by the remaining backslash, causing a literal double quotation
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
   mark (") to be placed in argv.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
 * In double quote mark need surround such chars::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
     & < > [ ] { } ^ = ; ! ' + , ` ~ %
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
   Also all this char can be escaped by ^ char.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
 * Long line can be truncated by ^ char, in this case trailing white spaces
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
   not allowed.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
 * To quote percent sign % before alpha char in batch file double it
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
   occurrences or plase in quotes::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    39
     prog '%'HOME'%' "%"HOME"%" %%HOME%
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
  http://msdn.microsoft.com/en-us/library/ms880421.aspx
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
                Parsing C Command-Line Arguments
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
Variables.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
==========
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
Variable name start with letter and underscore, next chars can be letter,
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
number and underscore. Variable name is case insensitive.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
List of variables.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
------------------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    53
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
  cmd> set
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
  ...
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
  VAR=VALUE
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
Getting.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
--------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    60
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    61
Write %VAR% in place where you want insert variable VAr value.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
Setting.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
--------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    66
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    67
  cmd> set /p VAR=VALUE
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    69
Deleting.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    70
---------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    71
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
  cmd> set VAR=
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
Input from user.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
----------------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    79
  cmd> set /p VAR=PROMPT
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    81
VAR is variable name, PROMPT is displayed prompt.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
Input from file.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
----------------
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    86
  cmd> set /p VAR=<FILE
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
VAR is variable name, FILE is file name. Sfter executing VAR contain first
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
line from FILE.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    90
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    91
CMD tricks.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    92
===========
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    93
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    94
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    95
  $ set /p TOOLOUTPUT= < temp.txt
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    96
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
  $ for /f "tokens=*" %%i in ('%~dp0sometool.exe') do set TOOLOUTPUT=%%i
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    98
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    99
  $ for /f "tokens=1 delims=" %%s in (users.txt) do (echo %%S & command "%%S") >> outputfile.txt
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   100
1075
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   101
Resize cmd window.
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   102
==================
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   103
::
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   104
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   105
  cmd# mode CON: COLS=120 LINES=40
9462290b5498 Resize cmd window.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 950
diff changeset
   106
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   107
Limits.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
=======
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   109
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   110
Variable value and one line command string after expansion can not exceed 8191
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
characters for Windows XP and later and 2047 for Windows NT, Windows 2000.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   112
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   113
  http://support.microsoft.com/default.aspx?scid=kb;en-us;830473
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   114
                Command prompt (Cmd. exe) command-line string limitation
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   115
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
How run cmd on 64-bit OS.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   117
=========================
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   118
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   119
From 64-bit process::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   120
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   121
  %windir%\System32\cmd.exe (for 64-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   122
  %windir%\SysWOW64\cmd.exe (for 32-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   124
From 32-bit process::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   125
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   126
  %windir%\System32\cmd.exe (for 32-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   127
  %windir%\Sysnative\cmd.exe (for 64-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   128
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   129
  http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   130
                File System Redirector
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   131