Windows-Server-2003/base/ploc/lcs/cmd.exe.lc

178 lines
52 KiB
Plaintext

[Strings]
(0,"MSG",10006,"",11,"",1,"",0,"")="Sets the window title for the command prompt window. TITLE [string] string Specifies the title for the command prompt window. "
(0,"MSG",10007,"",11,"",1,"",0,"")="Allows programs to open data files in specified directories as if they were in the current directory. APPEND [[drive:]path[;...]] [/X[:ON | :OFF]] [/PATH:ON | /PATH:OFF] [/E] APPEND ; [drive:]path Specifies a drive and directory to append. /X:ON Applies appended directories to file searches and application execution. /X:OFF Applies appended directories only to requests to open files. /X:OFF is the default setting. /PATH:ON Applies the appended directories to file requests that already specify a path. /PATH:ON is the default setting. /PATH:OFF Turns off the effect of /PATH:ON. /E Stores a copy of the appended directory list in an environment variable named APPEND. /E may be used only the first time you use APPEND after starting up your system. Type APPEND ; to clear the appended directory list. Type APPEND without parameters to display the appended directory list. "
(0,"MSG",10008,"",11,"",1,"",0,"")="Moves files and renames files and directories. To move one or more files: MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination To rename a directory: MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2 [drive:][path]filename1 Specifies the location and name of the file or files you want to move. destination Specifies the new location of the file. Destination can consist of a drive letter and colon, a directory name, or a combination. If you are moving only one file, you can also include a filename if you want to rename the file when you move it. [drive:][path]dirname1 Specifies the directory you want to rename. dirname2 Specifies the new name of the directory. /Y Suppresses prompting to confirm you want to overwrite an existing destination file. /-Y Causes prompting to confirm you want to overwrite an existing destination file. The switch /Y may be present in the COPYCMD environment variable. This may be overridden with /-Y on the command line. Default is to prompt on overwrites unless MOVE command is being executed from within a batch script. "
(0,"MSG",10009,"",11,"",1,"",0,"")="Stores the current directory for use by the POPD command, then changes to the specified directory. PUSHD [path | ..] path Specifies the directory to make the current directory. "
(0,"MSG",10019,"",11,"",1,"",0,"")="Sets the default console foreground and background colors. COLOR [attr] attr Specifies color attribute of console output Color attributes are specified by TWO hex digits -- the first corresponds to the background; the second the foreground. Each digit can be any of the following values: 0 = Black 8 = Gray 1 = Blue 9 = Light Blue 2 = Green A = Light Green 3 = Aqua B = Light Aqua 4 = Red C = Light Red 5 = Purple D = Light Purple 6 = Yellow E = Light Yellow 7 = White F = Bright White If no argument is given, this command restores the color to what it was when CMD.EXE started. This value either comes from the current console window, the /T command line switch or from the DefaultColor registry value. The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute the COLOR command with a foreground and background color that are the same. Example: "COLOR fc" produces light red on bright white "
(0,"MSG",10023,"",11,"",1,"",0,"")="****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=%1!d!, Stack Usage=%2!d! percent ****** B A T C H PROCESSING IS A B O R T E D ****** "
(0,"MSG",9000,"",11,"",1,"",0,"")="NY%0 "
(0,"MSG",9013,"",11,"",1,"",0,"")="^C "
(0,"MSG",9040,"",11,"",1,"",0,"")="Microsoft Windows [Version %1]%0 "
(0,"MSG",9044,"",11,"",1,"",0,"")=" %1 "
(0,"MSG",9075,"",11,"",1,"",0,"")="<DIR> %0 "
(0,"MSG",9085,"",11,"",1,"",0,"")="Displays the name of or changes the current directory. CHDIR [/D] [drive:][path] CHDIR [..] CD [/D] [drive:][path] CD [..] .. Specifies that you want to change to the parent directory. Type CD drive: to display the current directory in the specified drive. Type CD without parameters to display the current drive and directory. Use the /D switch to change current drive in addition to changing current directory for a drive. "
(0,"MSG",9087,"",11,"",1,"",0,"")="Copies one or more files to another location. COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]] source Specifies the file or files to be copied. /A Indicates an ASCII text file. /B Indicates a binary file. /D Allow the destination file to be created decrypted destination Specifies the directory and/or filename for the new file(s). /V Verifies that new files are written correctly. /N Uses short filename, if available, when copying a file with a non-8dot3 name. /Y Suppresses prompting to confirm you want to overwrite an existing destination file. /-Y Causes prompting to confirm you want to overwrite an existing destination file. /Z Copies networked files in restartable mode. The switch /Y may be preset in the COPYCMD environment variable. This may be overridden with /-Y on the command line. Default is to prompt on overwrites unless COPY command is being executed from within a batch script. To append files, specify a single file for destination, but multiple files for source (using wildcards or file1+file2+file3 format). "
(0,"MSG",9088,"",11,"",1,"",0,"")="Displays or sets the date. DATE [/T | date] Type DATE without parameters to display the current date setting and a prompt for a new one. Press ENTER to keep the same date. "
(0,"MSG",9089,"",11,"",1,"",0,"")="Deletes one or more files. DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names names Specifies a list of one or more files or directories. Wildcards may be used to delete multiple files. If a directory is specified, all files within the directory will be deleted. /P Prompts for confirmation before deleting each file. /F Force deleting of read-only files. /S Delete specified files from all subdirectories. /Q Quiet mode, do not ask if ok to delete on global wildcard /A Selects files to delete based on attributes attributes R Read-only files S System files H Hidden files A Files ready for archiving - Prefix meaning not "
(0,"MSG",9090,"",11,"",1,"",0,"")="Displays a list of files and subdirectories in a directory. DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4] [drive:][path][filename] Specifies drive, directory, and/or files to list. /A Displays files with specified attributes. attributes D Directories R Read-only files H Hidden files A Files ready for archiving S System files - Prefix meaning not /B Uses bare format (no heading information or summary). /C Display the thousand separator in file sizes. This is the default. Use /-C to disable display of separator. /D Same as wide but files are list sorted by column. /L Uses lowercase. /N New long list format where filenames are on the far right. /O List by files in sorted order. sortorder N By name (alphabetic) S By size (smallest first) E By extension (alphabetic) D By date/time (oldest first) G Group directories first - Prefix to reverse order /P Pauses after each screenful of information. /Q Display the owner of the file. /S Displays files in specified directory and all subdirectories. /T Controls which time field displayed or used for sorting timefield C Creation A Last Access W Last Written /W Uses wide list format. /X This displays the short names generated for non-8dot3 file names. The format is that of /N with the short name inserted before the long name. If no short name is present, blanks are displayed in its place. /4 Displays four-digit years Switches may be preset in the DIRCMD environment variable. Override preset switches by prefixing any switch with - (hyphen)--for example, /-W. "
(0,"MSG",9091,"",11,"",1,"",0,"")="Quits the CMD.EXE program (command interpreter) or the current batch script. EXIT [/B] [exitCode] /B specifies to exit the current batch script instead of CMD.EXE. If executed from outside a batch script, it will quit CMD.EXE exitCode specifies a numeric number. if /B is specified, sets ERRORLEVEL that number. If quitting CMD.EXE, sets the process exit code with that number. "
(0,"MSG",9092,"",11,"",1,"",0,"")="Creates a directory. MKDIR [drive:]path MD [drive:]path "
(0,"MSG",9093,"",11,"",1,"",0,"")="Displays or sets a search path for executable files. PATH [[drive:]path[;...][;%%PATH%%] PATH ; Type PATH ; to clear all search-path settings and direct cmd.exe to search only in the current directory. Type PATH without parameters to display the current path. Including %%PATH%% in the new path setting causes the old path to be appended to the new setting. "
(0,"MSG",9094,"",11,"",1,"",0,"")="Changes the cmd.exe command prompt. PROMPT [text] text Specifies a new command prompt. Prompt can be made up of normal characters and the following special codes: $A (Ampersand) $B | (pipe) $C ( (Left parenthesis) $D Current date $E Escape code (ASCII code 27) $F ) (Right parenthesis) $G > (greater-than sign) $H Backspace (erases previous character) $L < (less-than sign) $N Current drive $P Current drive and path $Q = (equal sign) $S (space) $T Current time $V Windows version number $_ Carriage return and linefeed $$ $ (dollar sign) "
(0,"MSG",9095,"",11,"",1,"",0,"")="Removes (deletes) a directory. RMDIR [/S] [/Q] [drive:]path RD [/S] [/Q] [drive:]path /S Removes all directories and files in the specified directory in addition to the directory itself. Used to remove a directory tree. /Q Quiet mode, do not ask if ok to remove a directory tree with /S "
(0,"MSG",9096,"",11,"",1,"",0,"")="Renames a file or files. RENAME [drive:][path]filename1 filename2. REN [drive:][path]filename1 filename2. Note that you cannot specify a new drive or path for your destination file. "
(0,"MSG",9097,"",11,"",1,"",0,"")="Displays, sets, or removes cmd.exe environment variables. SET [variable=[string]] variable Specifies the environment-variable name. string Specifies a series of characters to assign to the variable. Type SET without parameters to display the current environment variables. "
(0,"MSG",9098,"",11,"",1,"",0,"")="Displays or sets the system time. TIME [/T | time] Type TIME with no parameters to display the current time setting and a prompt for a new one. Press ENTER to keep the same time. "
(0,"MSG",9099,"",11,"",1,"",0,"")="Displays the contents of a text file or files. TYPE [drive:][path]filename "
(0,"MSG",9101,"",11,"",1,"",0,"")="Tells cmd.exe whether to verify that your files are written correctly to a disk. VERIFY [ON | OFF] Type VERIFY without a parameter to display the current VERIFY setting. "
(0,"MSG",9102,"",11,"",1,"",0,"")="Displays the disk volume label and serial number, if they exist. VOL [drive:] "
(0,"MSG",9103,"",11,"",1,"",0,"")="Calls one batch program from another. CALL [drive:][path]filename [batch-parameters] batch-parameters Specifies any command-line information required by the batch program. "
(0,"MSG",9104,"",11,"",1,"",0,"")="Records comments (remarks) in a batch file or CONFIG.SYS. REM [comment] "
(0,"MSG",9106,"",11,"",1,"",0,"")="Displays messages, or turns command-echoing on or off. ECHO [ON | OFF] ECHO [message] Type ECHO without parameters to display the current echo setting. "
(0,"MSG",9108,"",11,"",1,"",0,"")="Changes the position of replaceable parameters in a batch file. SHIFT [/n] "
(0,"MSG",9109,"",11,"",1,"",0,"")="Performs conditional processing in batch programs. IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command NOT Specifies that Windows should carry out the command only if the condition is false. ERRORLEVEL number Specifies a true condition if the last program run returned an exit code equal to or greater than the number specified. string1==string2 Specifies a true condition if the specified text strings match. EXIST filename Specifies a true condition if the specified filename exists. command Specifies the command to carry out if the condition is met. Command can be followed by ELSE command which will execute the command after the ELSE keyword if the specified condition is FALSE The ELSE clause must occur on the same line as the command after the IF. For example: IF EXIST filename. ( del filename. ) ELSE ( echo filename. missing. ) The following would NOT work because the del command needs to be terminated by a newline: IF EXIST filename. del filename. ELSE echo filename. missing Nor would the following work, since the ELSE command must be on the same line as the end of the IF command: IF EXIST filename. del filename. ELSE echo filename. missing The following would work if you want it all on one line: IF EXIST filename. (del filename.) ELSE echo filename. missing "
(0,"MSG",9110,"",11,"",1,"",0,"")="Runs a specified command for each file in a set of files. FOR %%variable IN (set) DO command [command-parameters] %%variable Specifies a single letter replaceable parameter. (set) Specifies a set of one or more files. Wildcards may be used. command Specifies the command to carry out for each file. command-parameters Specifies parameters or switches for the specified command. To use the FOR command in a batch program, specify %%%%variable instead of %%variable. Variable names are case sensitive, so %%i is different from %%I. "
(0,"MSG",9111,"",11,"",1,"",0,"")="Starts a separate window to run a specified program or command. START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [command/program] [parameters] "title" Title to display in window title bar. path Starting directory B Start application without creating a new window. The application has ^C handling ignored. Unless the application enables ^C processing, ^Break is the only way to interrupt the application I The new environment will be the original environment passed to the cmd.exe and not the current environment. MIN Start window minimized MAX Start window maximized SEPARATE Start 16-bit Windows program in separate memory space SHARED Start 16-bit Windows program in shared memory space LOW Start application in the IDLE priority class NORMAL Start application in the NORMAL priority class HIGH Start application in the HIGH priority class REALTIME Start application in the REALTIME priority class ABOVENORMAL Start application in the ABOVENORMAL priority class BELOWNORMAL Start application in the BELOWNORMAL priority class WAIT Start application and wait for it to terminate command/program If it is an internal cmd command or a batch file then the command processor is run with the /K switch to cmd.exe. This means that the window will remain after the command has been run. If it is not an internal cmd command or batch file then it is a program and will run as either a windowed application or a console application. parameters These are the parameters passed to the command/program "
(0,"MSG",9113,"",11,"",1,"",0,"")="Starts a new instance of the Windows command interpreter CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] string] /C Carries out the command specified by string and then terminates /K Carries out the command specified by string but remains /S Modifies the treatment of string after /C or /K (see below) /Q Turns echo off /D Disable execution of AutoRun commands from registry (see below) /A Causes the output of internal commands to a pipe or file to be ANSI /U Causes the output of internal commands to a pipe or file to be Unicode /T:fg Sets the foreground/background colors (see COLOR /? for more info) /E:ON Enable command extensions (see below) /E:OFF Disable command extensions (see below) /F:ON Enable file and directory name completion characters (see below) /F:OFF Disable file and directory name completion characters (see below) /V:ON Enable delayed environment variable expansion using ! as the delimiter. For example, /V:ON would allow !var! to expand the variable var at execution time. The %var% syntax expands variables at input time, which is quite a different thing when inside of a FOR loop. /V:OFF Disable delayed environment expansion. Note that multiple commands separated by the command separator '&&' are accepted for string if surrounded by quotes. Also, for compatibility reasons, /X is the same as /E:ON, /Y is the same as /E:OFF and /R is the same as /C. Any other switches are ignored. If /C or /K is specified, then the remainder of the command line after the switch is processed as a command line, where the following logic is used to process quote (") characters: 1. If all of the following conditions are met, then quote characters on the command line are preserved: - no /S switch - exactly two quote characters - no special characters between the two quote characters, where special is one of: <>()@^| - there are one or more whitespace characters between the the two quote characters - the string between the two quote characters is the name of an executable file. 2. Otherwise, old behavior is to see if the first character is a quote character and if so, strip the leading character and remove the last quote character on the command line, preserving any text after the last quote character. "
(0,"MSG",9114,"",11,"",1,"",0,"")="If /D was NOT specified on the command line, then when CMD.EXE starts, it looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if either or both are present, they are executed first. HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun "
(0,"MSG",9115,"",11,"",1,"",0,"")=" Command Extensions are enabled by default. You may also disable extensions for a particular invocation by using the /E:OFF switch. You can enable or disable extensions for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDIT.EXE: HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions to either 0x1 or 0x0. The user specific setting takes precedence over the machine setting. The command line switches take precedence over the registry settings. The command extensions involve changes and/or additions to the following commands: DEL or ERASE COLOR CD or CHDIR MD or MKDIR PROMPT PUSHD POPD SET SETLOCAL ENDLOCAL IF FOR CALL SHIFT GOTO START (also includes changes to external command invocation) ASSOC FTYPE To get specific details, type commandname /? to view the specifics. "
(0,"MSG",9116,"",11,"",1,"",0,"")=" Delayed environment variable expansion is NOT enabled by default. You can enable or disable delayed environment variable expansion for a particular invocation of CMD.EXE with the /V:ON or /V:OFF switch. You can enable or disable delayed expansion for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDIT.EXE: HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion to either 0x1 or 0x0. The user specific setting takes precedence over the machine setting. The command line switches take precedence over the registry settings. If delayed environment variable expansion is enabled, then the exclamation character can be used to substitute the value of an environment variable at execution time. "
(0,"MSG",9117,"",11,"",1,"",0,"")=" You can enable or disable file name completion for a particular invocation of CMD.EXE with the /F:ON or /F:OFF switch. You can enable or disable completion for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDIT.EXE: HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar with the hex value of a control character to use for a particular function (e.g. 0x4 is Ctrl-D and 0x6 is Ctrl-F). The user specific settings take precedence over the machine settings. The command line switches take precedence over the registry settings. If completion is enabled with the /F:ON switch, the two control characters used are Ctrl-D for directory name completion and Ctrl-F for file name completion. To disable a particular completion character in the registry, use the value for space (0x20) as it is not a valid control character. "
(0,"MSG",9118,"",11,"",1,"",0,"")=" Completion is invoked when you type either of the two control characters. The completion function takes the path string to the left of the cursor appends a wild card character to it if none is already present and builds up a list of paths that match. It then displays the first matching path. If no paths match, it just beeps and leaves the display alone. Thereafter, repeated pressing of the same control character will cycle through the list of matching paths. Pressing the Shift key with the control character will move through the list backwards. If you edit the line in any way and press the control character again, the saved list of matching paths is discarded and a new one generated. The same occurs if you switch between file and directory name completion. The only difference between the two control characters is the file completion character matches both file and directory names, while the directory completion character only matches directory names. If file completion is used on any of the built in directory commands (CD, MD or RD) then directory completion is assumed. The completion code deals correctly with file names that contain spaces or other special characters by placing quotes around the matching path. Also, if you back up, then invoke completion from within a line, the text to the right of the cursor at the point completion was invoked is discarded. The special characters that require quotes are: <space> ()[]{}^=;!%'+,`~ "
(0,"MSG",9122,"",11,"",1,"",0,"")="Displays or modifies file extension associations ASSOC [.ext[=[fileType]]] .ext Specifies the file extension to associate the file type with fileType Specifies the file type to associate with the file extension Type ASSOC without parameters to display the current file associations. If ASSOC is invoked with just a file extension, it displays the current file association for that file extension. Specify nothing for the file type and the command will delete the association for the file extension. "
(0,"MSG",9124,"",11,"",1,"",0,"")="Displays or modifies file types used in file extension associations FTYPE [fileType[=[openCommandString]]] fileType Specifies the file type to examine or change openCommandString Specifies the open command to use when launching files of this type. Type FTYPE without parameters to display the current file types that have open command strings defined. FTYPE is invoked with just a file type, it displays the current open command string for that file type. Specify nothing for the open command string and the FTYPE command will delete the open command string for the file type. Within an open command string %%0 or %%1 are substituted with the file name being launched through the assocation. %%* gets all the parameters and %%2 gets the 1st parameter, %%3 the second, etc. %%~n gets all the remaining parameters starting with the nth parameter, where n may be between 2 and 9, inclusive. For example: ASSOC .pl=PerlScript FTYPE PerlScript=perl.exe %%1 %%* would allow you to invoke a Perl script as follows: script.pl 1 2 3 If you want to eliminate the need to type the extensions, then do the following: set PATHEXT=.pl;%%PATHEXT%% and the script could be invoked as follows: script 1 2 3 "
(0,"MSG",9138,"",11,"",1,"",0,"")=" If Command Extensions are enabled the PROMPT command supports the following additional formatting characters: $+ zero or more plus sign (+) characters depending upon the depth of the PUSHD directory stack, one character for each level pushed. $M Displays the remote name associated with the current drive letter or the empty string if current drive is not a network drive. "
(0,"MSG",9141,"",11,"",1,"",0,"")=" If Command Extensions are enabled SET changes as follows: SET command invoked with just a variable name, no equal sign or value will display the value of all variables whose prefix matches the name given to the SET command. For example: SET P would display all variables that begin with the letter 'P' SET command will set the ERRORLEVEL to 1 if the variable name is not found in the current environment. SET command will not allow an equal sign to be part of the name of a variable. Two new switches have been added to the SET command: SET /A expression SET /P variable=[promptString] The /A switch specifies that the string to the right of the equal sign is a numerical expression that is evaluated. The expression evaluator is pretty simple and supports the following operations, in decreasing order of precedence: () - grouping ! ~ - - unary operators * / %% - arithmetic operators + - - arithmetic operators << >> - logical shift - bitwise and ^ - bitwise exclusive or | - bitwise or = *= /= %%= += -= - assignment &= ^= |= <<= >>= , - expression separator If you use any of the logical or modulus operators, you will need to enclose the expression string in quotes. Any non-numeric strings in the expression are treated as environment variable names whose values are converted to numbers before using them. If an environment variable name is specified but is not defined in the current environment, then a value of zero is used. This allows you to do arithmetic with environment variable values without having to type all those %% signs to get their values. If SET /A is executed from the command line outside of a command script, then it displays the final value of the expression. The assignment operator requires an environment variable name to the left of the assignment operator. Numeric values are decimal numbers, unless prefixed by 0x for hexadecimal numbers, and 0 for octal numbers. So 0x12 is the same as 18 is the same as 022. Please note that the octal notation can be confusing: 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits. "
(0,"MSG",9142,"",11,"",1,"",0,"")=" The /P switch allows you to set the value of a variable to a line of input entered by the user. Displays the specified promptString before reading the line of input. The promptString can be empty. Environment variable substitution has been enhanced as follows: %%PATH:str1=str2%% would expand the PATH environment variable, substituting each occurrence of "str1" in the expanded result with "str2". "str2" can be the empty string to effectively delete all occurrences of "str1" from the expanded output. "str1" can begin with an asterisk, in which case it will match everything from the beginning of the expanded output to the first occurrence of the remaining portion of str1. May also specify substrings for an expansion. %%PATH:~10,5%% would expand the PATH environment variable, and then use only the 5 characters that begin at the 11th (offset 10) character of the expanded result. If the length is not specified, then it defaults to the remainder of the variable value. If either number (offset or length) is negative, then the number used is the length of the environment variable value added to the offset or length specified. %%PATH:~-10%% would extract the last 10 characters of the PATH variable. %%PATH:~0,-2%% would extract all but the last 2 characters of the PATH variable. "
(0,"MSG",9143,"",11,"",1,"",0,"")=" Finally, support for delayed environment variable expansion has been added. This support is always disabled by default, but may be enabled/disabled via the /V command line switch to CMD.EXE. See CMD /? Delayed environment variable expansion is useful for getting around the limitations of the current expansion which happens when a line of text is read, not when it is executed. The following example demonstrates the problem with immediate variable expansion: set VAR=before if "%%VAR%%" == "before" ( set VAR=after if "%%VAR%%" == "after" @echo If you see this, it worked ) would never display the message, since the %%VAR%% in BOTH IF statements is substituted when the first IF statement is read, since it logically includes the body of the IF, which is a compound statement. So the IF inside the compound statement is really comparing "before" with "after" which will never be equal. Similarly, the following example will not work as expected: set LIST= for %%i in (*) do set LIST=%%LIST%% %%i echo %%LIST%% in that it will NOT build up a list of files in the current directory, but instead will just set the LIST variable to the last file found. Again, this is because the %%LIST%% is expanded just once when the FOR statement is read, and at that time the LIST variable is empty. So the actual FOR loop we are executing is: for %%i in (*) do set LIST= %%i which just keeps setting LIST to the last file found. Delayed environment variable expansion allows you to use a different character (the exclamation mark) to expand environment variables at execution time. If delayed variable expansion is enabled, the above examples could be written as follows to work as intended: set VAR=before if "%%VAR%%" == "before" ( set VAR=after if "!VAR!" == "after" @echo If you see this, it worked ) set LIST= for %%i in (*) do set LIST=!LIST! %%i echo %%LIST%% "
(0,"MSG",9144,"",11,"",1,"",0,"")=" If Command Extensions are enabled, then there are several dynamic environment variables that can be expanded but which don't show up in the list of variables displayed by SET. These variable values are computed dynamically each time the value of the variable is expanded. If the user explicitly defines a variable with one of these names, then that definition will override the dynamic one described below: %%CD%% - expands to the current directory string. %%DATE%% - expands to current date using same format as DATE command. %%TIME%% - expands to current time using same format as TIME command. %%RANDOM%% - expands to a random decimal number between 0 and 32767. %%ERRORLEVEL%% - expands to the current ERRORLEVEL value %%CMDEXTVERSION%% - expands to the current Command Processor Extensions version number. %%CMDCMDLINE%% - expands to the original command line that invoked the Command Processor. "
(0,"MSG",9146,"",11,"",1,"",0,"")=" If Command Extensions are enabled the SHIFT command supports the /n switch which tells the command to start shifting at the nth argument, where n may be between zero and eight. For example: SHIFT /2 would shift %%3 to %%2, %%4 to %%3, etc. and leave %%0 and %%1 unaffected. "
(0,"MSG",9147,"",11,"",1,"",0,"")=" If Command Extensions are enabled CALL changes as follows: CALL command now accepts labels as the target of the CALL. The syntax is: CALL :label arguments A new batch file context is created with the specified arguments and control is passed to the statement after the label specified. You must "exit" twice by reaching the end of the batch script file twice. The first time you read the end, control will return to just after the CALL statement. The second time will exit the batch script. Type GOTO /? for a description of the GOTO :EOF extension that will allow you to "return" from a batch script. In addition, expansion of batch script argument references (%%0, %%1, etc.) have been changed as follows: %%* in a batch script refers to all the arguments (e.g. %%1 %%2 %%3 %%4 %%5 ...) Substitution of batch parameters (%%n) has been enhanced. You can now use the following optional syntax: %%~1 - expands %%1 removing any surrounding quotes (") %%~f1 - expands %%1 to a fully qualified path name %%~d1 - expands %%1 to a drive letter only %%~p1 - expands %%1 to a path only %%~n1 - expands %%1 to a file name only %%~x1 - expands %%1 to a file extension only %%~s1 - expanded path contains short names only %%~a1 - expands %%1 to file attributes %%~t1 - expands %%1 to date/time of file %%~z1 - expands %%1 to size of file %%~$PATH:1 - searches the directories listed in the PATH environment variable and expands %%1 to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string "
(0,"MSG",9148,"",11,"",1,"",0,"")=" The modifiers can be combined to get compound results: %%~dp1 - expands %%1 to a drive letter and path only %%~nx1 - expands %%1 to a file name and extension only %%~dp$PATH:1 - searches the directories listed in the PATH environment variable for %%1 and expands to the drive letter and path of the first one found. %%~ftza1 - expands %%1 to a DIR like output line In the above examples %%1 and PATH can be replaced by other valid values. The %%~ syntax is terminated by a valid argument number. The %%~ modifiers may not be used with %%* "
(0,"MSG",9153,"",11,"",1,"",0,"")=" If Command Extensions are enabled, the following additional forms of the FOR command are supported: FOR /D %%variable IN (set) DO command [command-parameters] If set contains wildcards, then specifies to match against directory names instead of file names. FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters] Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree. FOR /L %%variable IN (start,step,end) DO command [command-parameters] The set is a sequence of numbers from start to end, by step amount. So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would generate the sequence (5 4 3 2 1) FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %%variable IN ("string") DO command [command-parameters] FOR /F ["options"] %%variable IN ('command') DO command [command-parameters] or, if usebackq option present: FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %%variable IN ('string') DO command [command-parameters] FOR /F ["options"] %%variable IN (`command`) DO command [command-parameters] filenameset is one or more file names. Each file is opened, read and processed before going on to the next file in filenameset. Processing consists of reading in the file, breaking it up into individual lines of text and then parsing each line into zero or more tokens. The body of the for loop is then called with the variable value(s) set to the found token string(s). By default, /F passes the first blank separated token from each line of each file. Blank lines are skipped. You can override the default parsing behavior by specifying the optional "options" parameter. This is a quoted string which contains one or more keywords to specify different parsing options. The keywords are: "
(0,"MSG",9154,"",11,"",1,"",0,"")=" eol=c - specifies an end of line comment character (just one) skip=n - specifies the number of lines to skip at the beginning of the file. delims=xxx - specifies a delimiter set. This replaces the default delimiter set of space and tab. tokens=x,y,m-n - specifies which tokens from each line are to be passed to the for body for each iteration. This will cause additional variable names to be allocated. The m-n form is a range, specifying the mth through the nth tokens. If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on the line after the last token parsed. usebackq - specifies that the new semantics are in force, where a back quoted string is executed as a command and a single quoted string is a literal string command and allows the use of double quotes to quote file names in filenameset. Some examples might help: FOR /F "eol=; tokens=2,3* delims=, " %%i in (myfile.txt) do @echo %%i %%j %%k "
(0,"MSG",9155,"",11,"",1,"",0,"")=" would parse each line in myfile.txt, ignoring lines that begin with a semicolon, passing the 2nd and 3rd token from each line to the for body, with tokens delimited by commas and/or spaces. Notice the for body statements reference %%i to get the 2nd token, %%j to get the 3rd token, and %%k to get all remaining tokens after the 3rd. For file names that contain spaces, you need to quote the filenames with double quotes. In order to use double quotes in this manner, you also need to use the usebackq option, otherwise the double quotes will be interpreted as defining a literal string to parse. %%i is explicitly declared in the for statement and the %%j and %%k are implicitly declared via the tokens= option. You can specify up to 26 tokens via the tokens= line, provided it does not cause an attempt to declare a variable higher than the letter 'z' or 'Z'. Remember, FOR variables are single-letter, case sensitive, global, and you can't have more than 52 total active at any one time. You can also use the FOR /F parsing logic on an immediate string, by making the filenameset between the parenthesis a quoted string, using single quote characters. It will be treated as a single line of input from a file and parsed. Finally, you can use the FOR /F command to parse the output of a command. You do this by making the filenameset between the parenthesis a back quoted string. It will be treated as a command line, which is passed to a child CMD.EXE and the output is captured into memory and parsed as if it was a file. So the following example: FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i would enumerate the environment variable names in the current environment. "
(0,"MSG",9156,"",11,"",1,"",0,"")=" In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax: %%~I - expands %%I removing any surrounding quotes (") %%~fI - expands %%I to a fully qualified path name %%~dI - expands %%I to a drive letter only %%~pI - expands %%I to a path only %%~nI - expands %%I to a file name only %%~xI - expands %%I to a file extension only %%~sI - expanded path contains short names only %%~aI - expands %%I to file attributes of file %%~tI - expands %%I to date/time of file %%~zI - expands %%I to size of file %%~$PATH:I - searches the directories listed in the PATH environment variable and expands %%I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %%~dpI - expands %%I to a drive letter and path only %%~nxI - expands %%I to a file name and extension only %%~fsI - expands %%I to a full path name with short names only %%~dp$PATH:I - searches the directories listed in the PATH environment variable for %%I and expands to the drive letter and path of the first one found. %%~ftzaI - expands %%I to a DIR like output line In the above examples %%I and PATH can be replaced by other valid values. The %%~ syntax is terminated by a valid FOR variable name. Picking upper case variable names like %%I makes it more readable and avoids confusion with the modifiers, which are not case sensitive. "
(0,"MSG",9157,"",11,"",1,"",0,"")=" If Command Extensions are enabled IF changes as follows: IF [/I] string1 compare-op string2 command IF CMDEXTVERSION number command IF DEFINED variable command where compare-op may be one of: EQU - equal NEQ - not equal LSS - less than LEQ - less than or equal GTR - greater than GEQ - greater than or equal and the /I switch, if specified, says to do case insensitive string compares. The /I switch can also be used on the string1==string2 form of IF. These comparisons are generic, in that if both string1 and string2 are both comprised of all numeric digits, then the strings are converted to numbers and a numeric comparison is performed. The CMDEXTVERSION conditional works just like ERRORLEVEL, except it is comparing against an internal version number associated with the Command Extensions. The first version is 1. It will be incremented by one when significant enhancements are added to the Command Extensions. CMDEXTVERSION conditional is never true when Command Extensions are disabled. The DEFINED conditional works just like EXISTS except it takes an environment variable name and returns true if the environment variable is defined. "
(0,"MSG",9158,"",11,"",1,"",0,"")=" %%ERRORLEVEL%% will expand into a string representation of the current value of ERRORLEVEL, provided that there is not already an environment variable with the name ERRORLEVEL, in which case you will get its value instead. After running a program, the following illustrates ERRORLEVEL use: goto answer%%ERRORLEVEL%% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1 You can also using the numerical comparisons above: IF %%ERRORLEVEL%% LEQ 1 goto okay %%CMDCMDLINE%% will expand into the original command line passed to CMD.EXE prior to any processing by CMD.EXE, provided that there is not already an environment variable with the name CMDCMDLINE, in which case you will get its value instead. %%CMDEXTVERSION%% will expand into a string representation of the current value of CMDEXTVERSION, provided that there is not already an environment variable with the name CMDEXTVERSION, in which case you will get its value instead. "
(0,"MSG",9172,"",11,"",1,"",0,"")="NYA%0 "
[Checksum]
(0,"MSG",10006,"",11,"",1,"",0,"")=12082
(0,"MSG",10007,"",11,"",1,"",0,"")=16230
(0,"MSG",10008,"",11,"",1,"",0,"")=40169
(0,"MSG",10009,"",11,"",1,"",0,"")=16532
(0,"MSG",10019,"",11,"",1,"",0,"")=17210
(0,"MSG",10023,"",11,"",1,"",0,"")=11381
(0,"MSG",9000,"",11,"",1,"",0,"")=276
(0,"MSG",9013,"",11,"",1,"",0,"")=185
(0,"MSG",9040,"",11,"",1,"",0,"")=2914
(0,"MSG",9044,"",11,"",1,"",0,"")=179
(0,"MSG",9075,"",11,"",1,"",0,"")=678
(0,"MSG",9085,"",11,"",1,"",0,"")=38526
(0,"MSG",9087,"",11,"",1,"",0,"")=37870
(0,"MSG",9088,"",11,"",1,"",0,"")=15315
(0,"MSG",9089,"",11,"",1,"",0,"")=761
(0,"MSG",9090,"",11,"",1,"",0,"")=26491
(0,"MSG",9091,"",11,"",1,"",0,"")=35956
(0,"MSG",9092,"",11,"",1,"",0,"")=4994
(0,"MSG",9093,"",11,"",1,"",0,"")=31809
(0,"MSG",9094,"",11,"",1,"",0,"")=48411
(0,"MSG",9095,"",11,"",1,"",0,"")=26982
(0,"MSG",9096,"",11,"",1,"",0,"")=16561
(0,"MSG",9097,"",11,"",1,"",0,"")=26156
(0,"MSG",9098,"",11,"",1,"",0,"")=16035
(0,"MSG",9099,"",11,"",1,"",0,"")=6927
(0,"MSG",9101,"",11,"",1,"",0,"")=15322
(0,"MSG",9102,"",11,"",1,"",0,"")=7100
(0,"MSG",9103,"",11,"",1,"",0,"")=17079
(0,"MSG",9104,"",11,"",1,"",0,"")=6207
(0,"MSG",9106,"",11,"",1,"",0,"")=13821
(0,"MSG",9108,"",11,"",1,"",0,"")=6729
(0,"MSG",9109,"",11,"",1,"",0,"")=61424
(0,"MSG",9110,"",11,"",1,"",0,"")=48644
(0,"MSG",9111,"",11,"",1,"",0,"")=22736
(0,"MSG",9113,"",11,"",1,"",0,"")=13085
(0,"MSG",9114,"",11,"",1,"",0,"")=30703
(0,"MSG",9115,"",11,"",1,"",0,"")=24939
(0,"MSG",9116,"",11,"",1,"",0,"")=17710
(0,"MSG",9117,"",11,"",1,"",0,"")=41968
(0,"MSG",9118,"",11,"",1,"",0,"")=4702
(0,"MSG",9122,"",11,"",1,"",0,"")=47230
(0,"MSG",9124,"",11,"",1,"",0,"")=43895
(0,"MSG",9138,"",11,"",1,"",0,"")=35672
(0,"MSG",9141,"",11,"",1,"",0,"")=63518
(0,"MSG",9142,"",11,"",1,"",0,"")=51820
(0,"MSG",9143,"",11,"",1,"",0,"")=34885
(0,"MSG",9144,"",11,"",1,"",0,"")=14811
(0,"MSG",9146,"",11,"",1,"",0,"")=23610
(0,"MSG",9147,"",11,"",1,"",0,"")=19082
(0,"MSG",9148,"",11,"",1,"",0,"")=50579
(0,"MSG",9153,"",11,"",1,"",0,"")=54593
(0,"MSG",9154,"",11,"",1,"",0,"")=39360
(0,"MSG",9155,"",11,"",1,"",0,"")=24726
(0,"MSG",9156,"",11,"",1,"",0,"")=14177
(0,"MSG",9157,"",11,"",1,"",0,"")=39073
(0,"MSG",9158,"",11,"",1,"",0,"")=20142
(0,"MSG",9172,"",11,"",1,"",0,"")=341
[Constraints]
(0,"MSG",10006,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",10007,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",10008,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",10009,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",10019,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",10023,"",11,"",1,"",0,"")={NoRules}{Placeholder=84:89}{Placeholder=103:107}
(0,"MSG",9000,"",11,"",1,"",0,"")={Adaptation}
(0,"MSG",9013,"",11,"",1,"",0,"")={Locked}
(0,"MSG",9040,"",11,"",1,"",0,"")={NoRules}{Placeholder=27:28}{Placeholder=30:31}
(0,"MSG",9044,"",11,"",1,"",0,"")={Locked}
(0,"MSG",9075,"",11,"",1,"",0,"")={MaxLength=19}
(0,"MSG",9085,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9087,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9088,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9089,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9090,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9091,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9092,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9093,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9094,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9095,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9096,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9097,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9098,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9099,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9101,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9102,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9103,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9104,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9106,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9108,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9109,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9110,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9111,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9113,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9114,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9115,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9116,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9117,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9118,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9122,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9124,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9138,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9141,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9142,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9143,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9144,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9146,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9147,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9148,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9153,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9154,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9155,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9156,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9157,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9158,"",11,"",1,"",0,"")={NoRules}
(0,"MSG",9172,"",11,"",1,"",0,"")={Adaptation}
[Comment]
(0,"MSG",9000,"",11,"",1,"",0,"")=No/Yes keys
(0,"MSG",9172,"",11,"",1,"",0,"")=No/Yes/All key