author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Thu, 09 Feb 2023 13:57:48 +0200 | |
changeset 2557 | 688949d16063 |
parent 2540 | d699ee7377a4 |
permissions | -rw-r--r-- |
950 | 1 |
.. -*- coding: utf-8; -*- |
2 |
||
3 |
==================== |
|
4 |
CMD Windows shell. |
|
5 |
==================== |
|
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 | 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 | 35 |
Quoting. |
36 |
======== |
|
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 | 55 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
56 |
& < > [ ] { } ^ = ; ! ' + , ` ~ % |
950 | 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 | 63 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
64 |
prog '%'HOME'%' "%"HOME"%" %%HOME% |
950 | 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 | 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 | 71 |
|
72 |
Variable name start with letter and underscore, next chars can be letter, |
|
73 |
number and underscore. Variable name is case insensitive. |
|
74 |
||
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
75 |
List variables:: |
950 | 76 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
77 |
cmd# set |
950 | 78 |
... |
79 |
VAR=VALUE |
|
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 | 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 | 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 | 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 | 91 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
92 |
set VAR= |
950 | 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 | 95 |
|
96 |
cmd> set /p VAR=<FILE |
|
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 | 100 |
:: |
101 |
||
102 |
$ set /p TOOLOUTPUT= < temp.txt |
|
103 |
||
104 |
$ for /f "tokens=*" %%i in ('%~dp0sometool.exe') do set TOOLOUTPUT=%%i |
|
105 |
||
106 |
$ for /f "tokens=1 delims=" %%s in (users.txt) do (echo %%S & command "%%S") >> outputfile.txt |
|
107 |
||
108 |
Limits. |
|
109 |
======= |
|
110 |
||
111 |
Variable value and one line command string after expansion can not exceed 8191 |
|
112 |
characters for Windows XP and later and 2047 for Windows NT, Windows 2000. |
|
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 | 116 |
|
117 |
How run cmd on 64-bit OS. |
|
118 |
========================= |
|
119 |
||
120 |
From 64-bit process:: |
|
121 |
||
122 |
%windir%\System32\cmd.exe (for 64-bit) |
|
123 |
%windir%\SysWOW64\cmd.exe (for 32-bit) |
|
124 |
||
125 |
From 32-bit process:: |
|
126 |
||
127 |
%windir%\System32\cmd.exe (for 32-bit) |
|
128 |
%windir%\Sysnative\cmd.exe (for 64-bit) |
|
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 | 132 |