cmd.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 07 Feb 2023 00:53:39 +0200
changeset 2555 70383fa8bf12
parent 2540 d699ee7377a4
permissions -rw-r--r--
About copying SSH pubkey.
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; -*-
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
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
 CMD Windows shell.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
====================
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
.. contents::
1905
fba288d59662 Include only local subsections into TOC. This prevent duplication of
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1334
diff changeset
     7
   :local:
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
2540
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
     9
Defining prompt
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    10
===============
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    11
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    12
Set the environmet variable ``PROMPT``, example of ``.reg`` file::
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    13
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    14
  [HKEY_CURRENT_USER\Environment]
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    15
  "PROMPT"="cmd# "
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    16
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    17
I embedded current time and directory; also a new line for readability of commands when a current
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    18
working directory path is too long::
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    19
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    20
  [HKEY_CURRENT_USER\Environment]
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    21
  "PROMPT"="$T$S$P$_cmd#$S"
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    22
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    23
CMD has built-in command to modify this env var::
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    24
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    25
  prompt "FORMAT"
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    26
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    27
To list available options use ``prompt /?``.
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    28
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    29
Resize a conhost window
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    30
=======================
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    31
::
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    32
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    33
  cmd# mode CON: COLS=120 LINES=40
d699ee7377a4 Defining CMD prompt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2539
diff changeset
    34
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
Quoting.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
========
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    38
* Arguments are delimited by white space, which is either a space or a tab.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    39
* A string surrounded by double quotation marks is interpreted as a single
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    40
  argument.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    41
* A double quotation mark preceded by a backslash, \", is interpreted as a
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    42
  literal double quotation mark.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    43
* Backslashes are interpreted literally, unless they immediately precede a
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    44
  double quotation mark.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    45
* If an even number of backslashes is followed by a double quotation mark,
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    46
  then one backslash (\) is placed in the argv array for every pair of
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    47
  backslashes (\\), and the double quotation mark (") is interpreted as a
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    48
  string delimiter.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    49
* If an odd number of backslashes is followed by a double quotation mark,
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    50
  then one backslash (\) is placed in the argv array for every pair of
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    51
  backslashes (\\) and the double quotation mark is interpreted as an escape
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    52
  sequence by the remaining backslash, causing a literal double quotation
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    53
  mark (") to be placed in argv.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    54
* In double quote mark need surround such chars::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    56
    & < > [ ] { } ^ = ; ! ' + , ` ~ %
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    58
  Also all this char can be escaped by ^ char.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    59
* Long line can be truncated by ^ char, in this case trailing white spaces
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    60
  not allowed.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    61
* To quote percent sign % before alpha char in batch file double it
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    62
  occurrences or plase in quotes::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    64
    prog '%'HOME'%' "%"HOME"%" %%HOME%
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    66
http://msdn.microsoft.com/en-us/library/ms880421.aspx
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
    67
  Parsing C Command-Line Arguments
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    69
Variables
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    70
=========
950
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
Variable name start with letter and underscore, next chars can be letter,
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
number and underscore. Variable name is case insensitive.
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    75
List variables::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    77
  cmd# set
950
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
  VAR=VALUE
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    81
Use syntax ``%NAME%`` to expand ``NAME`` value.
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    83
Use ``set`` command to define environment variable (``/p`` is with a user input, ``/a`` for
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    84
arithmetic expressions)::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    86
  set NAME=VALUE
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    87
  set /p PASS="Enter password: "
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    88
  set /a NUM="1+2"
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    90
To delete env variable set it to empty value::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    91
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    92
  set VAR=
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    93
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    94
To load first line from a file into a variable::
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    95
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    96
  cmd> set /p VAR=<FILE
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
2539
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    98
CMD tricks
742921adf64c Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
    99
==========
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   100
::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   101
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
  $ set /p TOOLOUTPUT= < temp.txt
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   104
  $ for /f "tokens=*" %%i in ('%~dp0sometool.exe') do set TOOLOUTPUT=%%i
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   105
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   106
  $ 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
   107
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
Limits.
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
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
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
   112
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
   113
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   114
http://support.microsoft.com/default.aspx?scid=kb;en-us;830473
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   115
  Command prompt (Cmd. exe) command-line string limitation.
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   117
How run cmd on 64-bit OS.
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
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   120
From 64-bit process::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   121
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   122
  %windir%\System32\cmd.exe (for 64-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
  %windir%\SysWOW64\cmd.exe (for 32-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   124
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   125
From 32-bit process::
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   126
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   127
  %windir%\System32\cmd.exe (for 32-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   128
  %windir%\Sysnative\cmd.exe (for 64-bit)
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   129
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   130
http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   131
  File System Redirector
950
06221010c81d Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   132