cmd.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:46:36 +0200
changeset 1905 fba288d59662
parent 1334 9bf0d5a1f0cf
child 1912 8b81a8f0f692
permissions -rw-r--r--
Include only local subsections into TOC. This prevent duplication of TOC when build single page HTML document. Also this make unnecessary CSS hack to hide document title as top level section.
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