1. Frequently-used Commands
General Notes: The commands are NOT case-sensitive (because the legacy DOS is not case-sensitive). In general, Windows/DOS Operating System is not case-sensitive, but Unixes are. Most of the programming languages such as C/C++/Java, with origin in Unix, are case-sensitive.
1.1 Help
Help: To list all the available commands, for example,
1.2 Directory- and File-related Commands
Other frequently-used directory- and file-related commands include:
del filenames
: Deletes files.ren current-filename new-filename
: Renames a file.mkdir directory-name
: Creates (or make) a sub-directory under the current working directory.rmdir directory-name
: Removes or deletes the sub-directory.copy filename new-filename
: Copies file.xcopy|robocopy
: Copies (or Robust copies) files and directory trees.
1.3 Environment and Local Variables
Environment variables are global system variables accessible by all the processes running under the Operating System. Environment variables are useful to store system-wide values such as the directories to search for the executable programs, the OS version, and the location of Windows binaries. (Windows registry was later created to store the ever-growing data needed for the applications in a more efficient manner.)
A process could access all the environment variables, it could also maintain its own local variables, which is available to itself only.
1.6 Redirection Operators and Filtering Commands
By default, the output of a command goes to the screen (called
STDOUT
), and the input of a command comes from the keyboard (called STDIN
). You can use a redirection operatorto redirect input and output from/to a file or another command:>
(output redirection): Writes the output to a file (or a device such as printer), instead of the screen (STDOUT
).>>
(output append redirection): Appends the output to a file, instead of the screen.<
(input redirection): Reads the input from a file or a device, instead of the keyboard (STDIN
).|
(pipe): Pipes the output of one command into the input of another command.
An output redirector
'>'
involves a program and a sink. An input redirector '<'
involves a program and a source. A pipe '|'
involves two programs.
These filtering commands work with redirection operators for specifying the input and output:
find string
: Searches for the specified string.sort
: Sort the lines alphabetically.more
: Displays one screen at a time and wait for a key-press to display the next screen. (It is useful in the old days when screen output is not buffered, but I find it annoying nowadays.)
For examples,
Prompt> more < abc.txt Prompt> find "Hello" < abc.txt Prompt> find "Hello" < abc.txt > out.txt Prompt> find "Hello" < abc.txt | more Prompt> sort < xyz.txt Prompt> find "John" < xyz.txt | sort > out.txt | Display the given file one screen at a time. Find the specified string from the given file. Find the specified string and write the results to another file. Display the result one screen at a time. Sort the lines alphabetically, output to screen. Find the string from file, sort the output, write result to file. |
Notes: Pipe '
|
' is used to pipe into another command (or process); output redirection '>
' is used to send the output to a file (or device such as printer) instead of STDOUT
.2.2 Symbolic Link (SymLink)
In Windows Vista/7/8, you can create a symlink to a file or a directory (similar to Unix), via command "
mklink
". Symlink could provide great convenience in many situations.
You need the "Create Symbolic Link" privilege to run "
mklink
" command, which only the administrators possessed by default. Start a CMD shell with administrator right ("run as administrator") to run the "mklink
" command..> help mklink
// Make a directory symlink called mysql to mysql-5.0.28-win32
> mklink /D mysql mysql-5.0.28-win32
symbolic link created for mysql <<===>> mysql-5.0.28-win32
> dir
10/14/2012 12:45 AM <SYMLINKD> mysql [mysql-5.0.28-win32]
Symlink is different from shortcut, which was available in the earlier Windows.
See here for Complete Guide to Symbolic Link in Windows
Symbolic links are basically advanced shortcuts. You can create symbolic links to individual files or folders, and then these will appear like they are stored in the folder with the symbolic link even though the symbolic link only points to their real location.
There are two types of symbolic links: hard and soft. Soft symbolic links work essentially the same as a standard shortcut. When you open a soft link, you will be redirected to the folder where the files are stored. However, a hard link makes it appear as though the file or folder actually exists at the location of the symbolic link, and your applications won’t know any different. Thus, hard links are of the most interest in this article. (duplicate PCB)
3. CMD Shell Language and Batch Files
Batch files, which employ a legacy scripting language, possesses very simple, primitive and clumsy syntax . For examples,
- The names and identifiers are not case-sensitive.
- All variables belong to the type string. There is no numeric type, and no arithmetic operations.
- Only simple and primitive flow control constructs (
if-else
,goto
, andcall
) are supported. Non-structuredgoto
's are used extensively, which make the script hard to read and understand. (Afor
construct is available to process each file from a set of files.)
The primary purpose of batch files is to automate a series of commands, instead of general programming.
3.1 Batch Commands
The frequently-used commands:
rem message
: commentpause
: Suspends execution of the batch program and displays the message "Press any key to continue . . .";echo message
: Displays the specified message. To display a blank line, use "echo.
".echo on|off
: When echo is on, all batch commands are echoed on the screen. When echo is off, only echo commands are displayed.@echo off
disables display for this echo command and subsequent batch commands. Echo is usually turned on during program testing and development, and turned off in production.echo %variable-name%
: Displays the value of an environment variable.- ctrl+c: to stop the batch file.
- ctrl+s: to suspend the batch file.
3.2 Variables
All the variables belong to the type string. The names and commands are not case-sensitive.
In a batch file, you can reference an environment variable using the syntax
%variable-name%
. For example, echo %USERNAME%
.
The command-line arguments can be referenced via variables
%0
to %9
from right-to-left, where %0
is the name of the batch file. For example,Prompt> process -o abc.out abc.in
The above command invoke a batch file
Process.bat
with command-line arguments. The command-line arguments can be referenced inside the batch file as follows:%0=Process
, %1=-o
, %2=abc.out
, and %3=abc.in
. To reference more argument, you need to use the command shift
, which shifts the value of %1
into %0
, %2
into %1
, ..., %9
into %8
, and the next argument into %9
.- setlocal
- endlocal
setlocal
and endlocal
: The command setlocal
begins localization of environment changes in a batch file. That is, changes to environment variables made after setlocal
are local to this batch file. The command endlocal
restores the previous environment settings. An endlocal
is issued implicitly at the end of a batch file.3.3 Program Control Constructs
if [not] exist filename command if [not] "string1"=="string2" command if [not] errorlevel n command if [not] ... (command1) else (command2) | Execute command if [if not] error-level is equal or greater than n (Error code is often set to 0 if no error occurs, 1 and higher otherwise.) |
goto label-name :label-name | Jump to the command at the specified label-name Define a label as target for goto |
for variable in (set) do command Examples: for %f in (*.doc *.txt) do type %f | Runs a specified command for each file in a set of files type out all .doc and .txt |
call filename arguments start program-name program-file prompt message | Call another batch file or program with arguments, and returns to this batch file Start a separate cmd session to run a specified program or batch file. Terminate this batch file, and start the specified program (or batch file) Put up the prompting message. |
The command
call
can be used to call another batch file or program. The control returns to the next statement following the call
command, after the called program is completed (similar to calling a subroutine in programming languages). For example, suppose "process.bat
" is to be used in a batch file. "call process
" executes the"process.bat
", and returns control to the next statement. On the other hand, "process
" alone (without call
) terminates the current batch file and executes the "process.bat
".3.4 Examples
Below is a sample batch file extracted from "
startup.bat
" for starting the Tomcat server. The script checks if environment variable CATALINA_HOME
is defined, else set it to the current directory or the parent directory, which contains "bin\catalina.bat
". It then packs all the command-line arguments into variable CMD_LINE_ARGS
, and call "catalina.bat start
CMD_LINE_ARGS
".@echo off if "%OS%" == "Windows_NT" setlocal rem Start script for the CATALINA Server rem Guess CATALINA_HOME if not defined set CURRENT_DIR=%cd% if not "%CATALINA_HOME%" == "" goto gotHome set CATALINA_HOME=%CURRENT_DIR% if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome cd .. set CATALINA_HOME=%cd% cd %CURRENT_DIR% :gotHome if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome echo CATALINA_HOME environment variable is not defined correctly goto end :okHome set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat if exist "%EXECUTABLE%" goto okExec echo Cannot find %EXECUTABLE% goto end :okExec rem Get remaining unshifted command line arguments set CMD_LINE_ARGS= :setArgs if ""%1""=="""" goto doneSetArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setArgs :doneSetArgs call "%EXECUTABLE%" start %CMD_LINE_ARGS% :end | turn off message display localized environment %cd% gives the current directory if CATALINA_HOME defined, goto gotHome else set to current directory if startup batch file found, goto okHome else set CATALINA_HOME to the parent directory check CATALINA_HOME CATALINA_HOME defined "catalina.bat" found append next argument behind ready to start the server "catalina start cmd_line_args" |
done
No comments:
Post a Comment