windows命令行及批处理文件小结
1、命令Shell概述(Command shell overview):
The command shell is a separate software program that provides direct communication between the user and the operating system. The non-graphical command shell user interface provides the environment in which you run character-based applications and utilities. The command shell executes programs and displays their output on the screen by using individual characters similar to the MS-DOS command interpreter Command.com. The Windows XP command shell uses the command interpreter Cmd.exe, which loads applications and directs the flow of information between applications, to translate user input into a form that the operating system understands.
You can use the command shell to create and edit batch files (also called scripts) to automate routine tasks. For example, you can use scripts to automate the management of user accounts or nightly backups. You can also use the Windows Script Host, CScript.exe, to run more sophisticated scripts in the command shell. You can perform operations more efficiently by using batch files than you can by using the user interface. Batch files accept all commands that are available at the command line. For more information about batch files and scripting, see Using batch files
You can customize the command prompt window for easier viewing and to increase control over how you run programs. For more information about customizing the command prompt window, see To configure the command prompt
1.1、Using command syntax:
Syntax appears in the order in which you must type a command and any parameters that follow it. The following example of the xcopy command illustrates a variety of syntax text formats:
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z]
The following table explains how to interpret the different text formats.
Formatting legend
Format | Meaning |
Italic |
Information that the user must supply |
Bold |
Elements that the user must type exactly as shown |
Ellipsis (...) |
Parameter that can be repeated several times in a command line |
Between brackets ([]) |
Optional items |
Between braces ({}); choices separated by pipe (|). Example: {even|odd} |
Set of choices from which the user must choose only one |
Courier font |
Code or program output |
1.2、Using multiple commands and conditional processing symbols
You can run multiple commands from a single command line or script using conditional processing symbols. When you run multiple commands with conditional processing symbols, the commands to the right of the conditional processing symbol act based upon the results of the command to the left of the conditional processing symbol. For example, you might want to run a command only if the previous command fails. Or, you might want to run a command only if the previous command is successful.
You can use the special characters listed in the following table to pass multiple commands.
Character | Syntax | Definition |
& [...] |
command1 & command2 |
Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command. |
&& [...] |
command1 && command2 |
Use to run the command following && only if the command preceding the symbol is successful. Cmd.exe runs the first command, and then runs the second command only if the first command completed successfully. |
|| [...] |
command1 || command2 |
Use to run the command following || only if the command preceding || fails. Cmd.exe runs the first command, and then runs the second command only if the first command did not complete successfully (receives an error code greater than zero). |
( ) [...] |
(command1 & command2) |
Use to group or nest multiple commands. |
; or , |
command1 parameter1;parameter2 |
Use to separate command parameters. |
Note
• |
The ampersand (&), pipe (|), and parentheses ( ) are special characters that must be preceded by the escape character (^) or quotation marks when you pass them as arguments. |
• |
If a command completes an operation successfully, it returns an exit code of zero (0) or no exit code. For more information about exit codes, see Microsoft Windows Resource Kits |
1.3、Nesting command shells
You can nest command shells within Cmd.exe by opening a new instance of Cmd.exe at the command prompt. By default, each instance of Cmd.exe inherits the environment of its parent Cmd.exe application. By nesting instances of Cmd.exe, you can make changes to the local environment without affecting the parent application of Cmd.exe. This allows you to preserve the original environment of Cmd.exe and return to it after you terminate the nested command shell. The changes you make in the nested command shell are not saved.
To nest a command shell, at the command prompt, type:
cmd
A message similar to the following appears:
Microsoft (R) Windows XP (TM)
(C) Copyright 1985-2001 Microsoft Corp.
To close the nested command shell, type exit.
You can localize changes even further in an instance of Cmd.exe (or in a script) by using the setlocal and endlocal commands. Setlocal creates a local scope and endlocal terminates the local scope. Any changes made within the setlocal and endlocal scope are discarded, thereby leaving the original environment unchanged. You can nest these two commands to a maximum of 32 levels. For more information about the setlocal and endlocal commands, see Setlocal and Endlocal
1.4、Using environment variables with Cmd.exe
The Cmd.exe command-shell environment is defined by variables that determine the behavior of the command shell and the operating system. You can define the behavior of the command-shell environment or the entire operating system environment by using two types of environment variables, system and local. System environment variables define the behavior of the global operating system environment. Local environment variables define the behavior of the environment of the current instance of Cmd.exe.
System environment variables are preset in the operating system and available to all Windows XP processes. Only users with administrative privileges can change system variables. These variables are most commonly used in logon scripts.
Local environment variables are only available when the user for whom they were created is logged on to the computer. Local variables set in the HKEY_CURRENT_USER hive are valid only for the current user, but define the behavior of the global operating system environment.
The following list describes the various types of variables in descending order of precedence:
1. |
Built-in system variables |
2. |
System variables found in the HKEY_LOCAL_MACHINE hive |
3. |
Local variables found in the HKEY_CURRENT_USER hive |
4. |
All environment variables and paths set in the Autoexec.bat file |
5. |
All environment variables and paths set in a logon script (if present) |
6. |
Variables used interactively in a script or batch file |
In the command shell, each instance of Cmd.exe inherits the environment of its parent application. Therefore, you can change the variables in the new Cmd.exe environment without affecting the environment of the parent application.
The following table lists the system and local environment variables for Windows XP.
Variable | Type | Description |
%ALLUSERSPROFILE% |
Local |
Returns the location of the All Users Profile. |
%APPDATA% |
Local |
Returns the location where applications store data by default. |
%CD% |
Local |
Returns the current directory string. |
%CMDCMDLINE% |
Local |
Returns the exact command line used to start the current Cmd.exe. |
%CMDEXTVERSION% |
System |
Returns the version number of the current Command Processor Extensions. |
%COMPUTERNAME% |
System |
Returns the name of the computer. |
%COMSPEC% |
System |
Returns the exact path to the command shell executable. |
%DATE% |
System |
Returns the current date. Uses the same format as the date /t command. Generated by Cmd.exe. For more information about the date command, see Date |
%ERRORLEVEL% |
System |
Returns the error code of the most recently used command. A non zero value usually indicates an error. |
%HOMEDRIVE% |
System |
Returns which local workstation drive letter is connected to the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%HOMEPATH% |
System |
Returns the full path of the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%HOMESHARE% |
System |
Returns the network path to the user's shared home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%LOGONSEVER% |
Local |
Returns the name of the domain controller that validated the current logon session. |
%NUMBER_OF_PROCESSORS% |
System |
Specifies the number of processors installed on the computer. |
%OS% |
System |
Returns the operating system name. Windows 2000 displays the operating system as Windows_NT. |
%PATH% |
System |
Specifies the search path for executable files. |
%PATHEXT% |
System |
Returns a list of the file extensions that the operating system considers to be executable. |
%PROCESSOR_ARCHITECTURE% |
System |
Returns the chip architecture of the processor. Values: x86, IA64. |
%PROCESSOR_IDENTIFIER% |
System |
Returns a description of the processor. |
%PROCESSOR_LEVEL% |
System |
Returns the model number of the processor installed on the computer. |
%PROCESSOR_REVISION% |
System |
Returns the revision number of the processor. |
%PROMPT% |
Local |
Returns the command prompt settings for the current interpreter. Generated by Cmd.exe. |
%RANDOM% |
System |
Returns a random decimal number between 0 and 32767. Generated by Cmd.exe. |
%SYSTEMDRIVE% |
System |
Returns the drive containing the Windows XP root directory (that is, the system root). |
%SYSTEMROOT% |
System |
Returns the location of the Windows XP root directory. |
%TEMP% and %TMP% |
System and User |
Returns the default temporary directories that are used by applications available to users who are currently logged on. Some applications require TEMP and others require TMP. |
%TIME% |
System |
Returns the current time. Uses the same format as the time /t command. Generated by Cmd.exe. For more information about the time command, see Time |
%USERDOMAIN% |
Local |
Returns the name of the domain that contains the user's account. |
%USERNAME% |
Local |
Returns the name of the user who is currently logged on. |
%USERPROFILE% |
Local |
Returns the location of the profile for the current user. |
%WINDIR% |
System |
Returns the location of the operating system directory. |
1.5、Setting environment variables
Use the set command to create, change, delete, or display environment variables. The set command alters variables in the current shell environment only.
To view a variable, at a command prompt, type:
set VariableName
To add a variable, at a command prompt, type:
set variablename=value
To delete a variable, at a command prompt, type:
set VariableName=
You can use most characters as variable values, including white space. If you use the special characters <, >, |, &, or ^, you must precede them with the escape character (^) or quotation marks. If you use quotation marks, they are included as part of the value because everything following the equal sign is taken as the value. Consider the following examples:
• |
To create the variable value new&name, type: set varname=new^&name |
• |
To create the variable value "new&name", type: set varname="new&name" |
• |
If you type set varname=new&name at the command prompt, an error message similar to the following appears: "'name' is not recognized as an internal or external command, operable program or batch file." |
Variable names are not case-sensitive. However, set displays the variable exactly as you typed it. You can combine uppercase and lowercase letters in your variable names to make your code more readable (for example, UserName).
Note
• |
The maximum individual environment variable size is 8192bytes. |
• |
The maximum total environment variable size for all variables, which includes variable names and the equal sign, is 65,536KB. |
1.6、Substituting environment variable values
To enable the substitution of variable values at the command line or in scripts, enclose the variable name in percent signs (that is, %variablename%). By using percent signs, you ensure that Cmd.exe references the variable values instead of making a literal comparison. After you define variable values for a variable name, enclose the variable name in percent signs. Cmd.exe searches for all instances of the variable name and replaces it with the defined variable value. For example, if you create a script that contains different values (for example, user names) and you want to define the USERNAME environment variable for each user with these values, you can write one script using the variable USERNAME enclosed in percent signs. When you run this script, Cmd.exe replaces %USERNAME% with the variable values, which eliminates the need to perform this task manually for each user. Variable substitution is not recursive. Cmd.exe checks variables once. For more information about variable substitution, see For and Call
2、使用批处理文件:(msdn):
3、具体命令:
3.1、echo与@
echo可以说是批处理文件中最简单的指令了。我们知道批处理文件是按行执行的,也就是每一行执行一次,命令提示符也相应地一行出现一次,我跟我们自己手动输入一行命令一样。但我们通常希望批处理文件中的命令执行即可,而不用显示命令自身,这时echo就派上用场了。
3.1.1 echo命令语法如下:
echo [{on|off}] [message]
3.1.2 参数使用:
- (1)on/off:关闭或开启命令自身的显示功能
- (2)message :显示一条消息
- (3)/?:显示echo命令的帮助信息
- (4)echo命令还可以与重定向符一起使用,譬如把一条命令语句导入到一个文件之中
3.1.3 @
想屏蔽当前命令行本身的显示,只要在命令前加@符号即可。譬如我们连echo off也不想让它显示出来,那就使用@echo off语句即可。@不应该被视为一个命令。
4、符号:
4.1、使用重定向操作符:
4.1.1、重定向操作符:
- > 将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。
- < 从文件中而不是从键盘中读入命令输入
- >> 将命令输出添加到文件末尾而不删除文件中的信息
- >& 将一个句柄的输出写入到另一个句柄的输入中
- <& 从一个句柄读取输入并将其写入到另一个句柄输出中
- | 从一个命令中读取输出并将其写入另一个命令的输入中。也称为管道
默认情况下,cmd.exe从键盘接受命令输入,键盘以STDIN handle(标准输入)表示;向命令提示符窗口发送命令输出,命令提示符窗口以STDOUT handle(标准输出)表示。
4.1.2、重定向涉及的句柄:
上面已经提到了STDIN和STDOUT两个句柄了,我们再来总的看一下重定位中涉及到的所有句柄:
- 句柄 句柄值 句柄描述
- STDIN 0 键盘输入
- STDOUT 1 命令提示符窗口输出
- STDERR 2 命令提示符窗口错误输出
- UNDEFINED 3-9 这些句柄的意义由各应用程序自由定义。
【注】其实还有一个句柄,称为nul
4.1.3、一些必须强调的问题:
命令行中的一条指令就是一个应用程序。重定向的主体是指令的输入、输出和错误输出。重定向只对当前指令有效。
4.1.4、实例:
从定向比较难理解,需要多一些实例来帮助理解其应用。
4.1.4.1、复制句柄:
4.1.4.2、重定向命令的输入(<):
<使命令的输入从键盘转向文件或设备。譬如要把test.txt中的内容以行为单位按字符顺序排序并把结果输出在命令行窗口中,我们可以:
sort<test.txt
这条命令把sort指令的输入从标准输入重定向为test.txt。
4.1.4.3、重定向命令的输出(>):
几乎所有的命令都会把输出送到命令提示窗口中去。甚至那些把输出送到驱动器或者打印机的命令也会在命令提示窗口中显示消息。
用>可以把命令的输出从标准输出重定位到文件或设备中去。大部分的指令都可以使用这个操作符。譬如dir指令:
dir>dirlist.txt
如果dirlist.txt不存在,Cmd.exe创建它。如果dirlist.txt文件已经存在,Cmd.exe替换文件内容为dir命令的输出。
To redirect command output from the Command Prompt window to a file or device, use the > operator. You can use this operator with most commands. For example, to redirect dir output to Dirlist.txt:
dir>dirlist.txt
If Dirlist.txt does not exist, Cmd.exe creates it. If Dirlist.txt exists, Cmd.exe replaces the information in the file with the output from the dir command.
To run the netsh routing dump command and then send the command output to Route.cfg, type:
netsh routing dump>c:\route.cfg
The > operator opens the specified file with write-only access. As a result, you cannot read the file when you use this operator. For example, if you start a program with redirection >&0, all attempts to write handle 1 fail because handle 0 is initially opened with read-only access.
4.1.4.4、重定向输入和复制(<&):
Using the <& operator to redirect input and duplicate
To use the redirection input operator <&, the file you specify must already exist. If the input file exists, Cmd.exe opens it as read-only and sends the characters contained in the file as input to the command as if they were input from the keyboard. If you specify a handle, Cmd.exe duplicates the handle you specify onto the existing handle in the system.
For example, to open File.txt as input read to handle 0 (that is, STDIN), type:
< file.txt
To open File.txt, sort the contents and then send the output to the Command Prompt window (that is, STDOUT), type:
sort< file.txt
To find File.txt, and then redirect handle 1 (that is, STDOUT) and handle 2 (that is, STDERR) to the Search.txt, type:
findfile file.txt>search.txt 2<&1
To duplicate a user-defined handle 3 as input read to handle 0 (that is, STDIN), type:
<&3
4.2、转义符号:
当命令行中出现一个插入符(^)时,紧跟其后的字符按字面意义解释而不是按控制字符解释。譬如第一章节提到的,当需要把与字符、管道字符、圆括号等字符作为参数传递时须用转义字符或用引号括起。
2、findstr - 在文件中查找字符串
这个命令的使用通过帮助(findstr /?)一目了然,但/s(在当前目录和所有子目录中搜索匹配文件)使用有些不直观。直接使用/s选项命令会卡死,只能使用ctrl+c结束,必须使用形如/s *.txt(目录和子目录下的txt文件)、/s *(目录和自目录下所有文件)的格式才能正常工作。
windows命令行及批处理文件小结的更多相关文章
- 探索Windows命令行系列(2):命令行工具入门
1.理论基础 1.1.命令行的前世今生 1.2.命令执行规则 1.3.使用命令历史 2.使用入门 2.1.启动和关闭命令行 2.2.执行简单的命令 2.3.命令行执行程序使用技巧 3.总结 1.理论基 ...
- 探索Windows命令行系列(6):活用批处理解决实际问题
1.批量修改文件名 2.批量重启服务 3.全盘搜索指定文件 3.1.全盘搜索名称为 mm.jpg 的文件,获取其全路径 3.2.查找系统中所有名称以 .docx 结尾的文件 4.调用可执行程序 4.1 ...
- Windows命令行参数的知识(一)
最近没事的时候,准备研究一下Windows命令行参数的知识,因为每次自己在操作电脑时总是效率太慢,如果能够了解Windows参数的一些知识,绝对能提高效率! 基本外部命令和内部命令 首先是基本的知识, ...
- Windows 命令行切换目录
Windows 命令行切换目录 特别注意:切换到其它盘符不需要 cd 命令 1. 切换到 C 盘根目录 打开终端 cmd 后,输入cd C:\(一定要加上后面的反斜扛) 2.切换到 C 盘子目录 打开 ...
- Windows命令行(DOS命令)教程
一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS——Disk Operation System 磁盘 ...
- git代理,windows命令行代理,linux命令行代理
下载不动设置代理:git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https:/ ...
- windows命令行下简单使用javac、java、javap详细演示
最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...
- Windows命令行中使用SSH连接Linux
转自 http://www.linuxidc.com/Linux/2014-02/96625.htm 1.下载: openssh for Winodws: 免费下载地址在 http://linux.l ...
- Windows命令行语法说明
摘自:http://lavasoft.blog.51cto.com/62575/1113234 Windows命令行语法说明 说来惭愧,用windows这么多年了,对其命令行语法看得似懂非懂, ...
随机推荐
- Css_2跟3
#css2中的选择器 1.元素选择器 *通配符选择符.html类型选择符.id选择符.class选择符 2.关系选择器 E F(包含选择器).E>F(子选择器).E+F(E元素后 ...
- 如何将根文件系统制作成yaffs格式,并设置从yaffs启动
1.利用mkyaffs2image 工具,将根文件系统打包成yaffs镜像包 mkyaffs2image-128M root_qtopia root_qtopia.img 2.设置uboot参数boo ...
- intel simd 资料
http://www.cnblogs.com/zyl910/archive/2012/04/26/md00.html https://software.intel.com/sites/landingp ...
- CRLF CSRF XSS
http://baike.baidu.com/link?url=BXWN2I6J23thrrm6JoEnAYvmNqp83llyaydaj5RYkq--tuJKSFuMuDMIoTPnKjthRUm3 ...
- 用NAN简化Google V8 JS引擎的扩展
通过C++扩展Google V8 JS引擎的文章很多,Google V8 JS带的例子也容易明白.但是大部分文章都是Hello World型的,真正使用时发现处处是坑.扩展V8最经典的例子就是node ...
- 猫都能学会的Unity3D Shader入门指南
https://onevcat.com/2013/07/shader-tutorial-1/ https://onevcat.com/2013/08/shader-tutorial-2/
- 能源项目xml文件标签释义--DataSource
<bean id="dataSource1" class="org.apache.tomcat.jdbc.pool.DataSource" destroy ...
- js中event.target和event.srcElement的区别
看了很多资料绝对结果就是 firefox 下的 event.target = IE 下的 event.srcElement jquery中的event.target属性的作用是获取到出发事件的元素.j ...
- centos7 学习
1.centos pid文件: 在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件.而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件.那么这些 ...
- JDK1.7-LinkedList循环链表优化
最近在看jdk1.7的时候,发现LinkedList 和1.6中的变化. 首先,简单介绍一下LinkedList: LinkedList是List接口的双向链表实现.由于是链表结构,所以长度没有限制: ...