author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Sun, 27 Nov 2022 18:41:07 +0200 | |
changeset 2539 | 742921adf64c |
parent 2228 | 837f1337c59b |
child 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 |
|
9 |
Quoting. |
|
10 |
======== |
|
11 |
||
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
12 |
* 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
|
13 |
* 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
|
14 |
argument. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
15 |
* 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
|
16 |
literal double quotation mark. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
17 |
* 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
|
18 |
double quotation mark. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
19 |
* 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
|
20 |
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
|
21 |
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
|
22 |
string delimiter. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
23 |
* 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
|
24 |
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
|
25 |
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
|
26 |
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
|
27 |
mark (") to be placed in argv. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
28 |
* In double quote mark need surround such chars:: |
950 | 29 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
30 |
& < > [ ] { } ^ = ; ! ' + , ` ~ % |
950 | 31 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
32 |
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
|
33 |
* 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
|
34 |
not allowed. |
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
35 |
* 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
|
36 |
occurrences or plase in quotes:: |
950 | 37 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
38 |
prog '%'HOME'%' "%"HOME"%" %%HOME% |
950 | 39 |
|
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
40 |
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
|
41 |
Parsing C Command-Line Arguments |
950 | 42 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
43 |
Variables |
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
44 |
========= |
950 | 45 |
|
46 |
Variable name start with letter and underscore, next chars can be letter, |
|
47 |
number and underscore. Variable name is case insensitive. |
|
48 |
||
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
49 |
List variables:: |
950 | 50 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
51 |
cmd# set |
950 | 52 |
... |
53 |
VAR=VALUE |
|
54 |
||
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
55 |
Use syntax ``%NAME%`` to expand ``NAME`` value. |
950 | 56 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
57 |
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
|
58 |
arithmetic expressions):: |
950 | 59 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
60 |
set NAME=VALUE |
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
61 |
set /p PASS="Enter password: " |
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
62 |
set /a NUM="1+2" |
950 | 63 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
64 |
To delete env variable set it to empty value:: |
950 | 65 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
66 |
set VAR= |
950 | 67 |
|
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
68 |
To load first line from a file into a variable:: |
950 | 69 |
|
70 |
cmd> set /p VAR=<FILE |
|
71 |
||
2539
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
72 |
CMD tricks |
742921adf64c
Working with CMD variables.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
2228
diff
changeset
|
73 |
========== |
950 | 74 |
:: |
75 |
||
76 |
$ set /p TOOLOUTPUT= < temp.txt |
|
77 |
||
78 |
$ for /f "tokens=*" %%i in ('%~dp0sometool.exe') do set TOOLOUTPUT=%%i |
|
79 |
||
80 |
$ for /f "tokens=1 delims=" %%s in (users.txt) do (echo %%S & command "%%S") >> outputfile.txt |
|
81 |
||
1075 | 82 |
Resize cmd window. |
83 |
================== |
|
84 |
:: |
|
85 |
||
86 |
cmd# mode CON: COLS=120 LINES=40 |
|
87 |
||
950 | 88 |
Limits. |
89 |
======= |
|
90 |
||
91 |
Variable value and one line command string after expansion can not exceed 8191 |
|
92 |
characters for Windows XP and later and 2047 for Windows NT, Windows 2000. |
|
93 |
||
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
94 |
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
|
95 |
Command prompt (Cmd. exe) command-line string limitation. |
950 | 96 |
|
97 |
How run cmd on 64-bit OS. |
|
98 |
========================= |
|
99 |
||
100 |
From 64-bit process:: |
|
101 |
||
102 |
%windir%\System32\cmd.exe (for 64-bit) |
|
103 |
%windir%\SysWOW64\cmd.exe (for 32-bit) |
|
104 |
||
105 |
From 32-bit process:: |
|
106 |
||
107 |
%windir%\System32\cmd.exe (for 32-bit) |
|
108 |
%windir%\Sysnative\cmd.exe (for 64-bit) |
|
109 |
||
2228
837f1337c59b
Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1912
diff
changeset
|
110 |
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
|
111 |
File System Redirector |
950 | 112 |