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命令还可以与重定向符一起使用,譬如把一条命令语句导入到一个文件之中
[注]:命令行好像不支持命令嵌套 echo set name = "victor-ma",这只是一个显示命令,不会被识别为set指令。
[注]:前面说到,echo可以与重定向符一起配合使用,且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命令行及批处理文件小结的更多相关文章

  1. 探索Windows命令行系列(2):命令行工具入门

    1.理论基础 1.1.命令行的前世今生 1.2.命令执行规则 1.3.使用命令历史 2.使用入门 2.1.启动和关闭命令行 2.2.执行简单的命令 2.3.命令行执行程序使用技巧 3.总结 1.理论基 ...

  2. 探索Windows命令行系列(6):活用批处理解决实际问题

    1.批量修改文件名 2.批量重启服务 3.全盘搜索指定文件 3.1.全盘搜索名称为 mm.jpg 的文件,获取其全路径 3.2.查找系统中所有名称以 .docx 结尾的文件 4.调用可执行程序 4.1 ...

  3. Windows命令行参数的知识(一)

    最近没事的时候,准备研究一下Windows命令行参数的知识,因为每次自己在操作电脑时总是效率太慢,如果能够了解Windows参数的一些知识,绝对能提高效率! 基本外部命令和内部命令 首先是基本的知识, ...

  4. Windows 命令行切换目录

    Windows 命令行切换目录 特别注意:切换到其它盘符不需要 cd 命令 1. 切换到 C 盘根目录 打开终端 cmd 后,输入cd C:\(一定要加上后面的反斜扛) 2.切换到 C 盘子目录 打开 ...

  5. Windows命令行(DOS命令)教程

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS——Disk Operation System 磁盘 ...

  6. git代理,windows命令行代理,linux命令行代理

    下载不动设置代理:git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https:/ ...

  7. windows命令行下简单使用javac、java、javap详细演示

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...

  8. Windows命令行中使用SSH连接Linux

    转自 http://www.linuxidc.com/Linux/2014-02/96625.htm 1.下载: openssh for Winodws: 免费下载地址在 http://linux.l ...

  9. Windows命令行语法说明

    摘自:http://lavasoft.blog.51cto.com/62575/1113234   Windows命令行语法说明   说来惭愧,用windows这么多年了,对其命令行语法看得似懂非懂, ...

随机推荐

  1. ORA-00205

    场景 数据库启动时报错.关闭前还是正常运行的,再次启动时,就报了以下错误. Copyright (c) , , Oracle. All rights reserved. Connected to an ...

  2. iOS开发 判断扫码是否为有效网址

    - (BOOL)achiveStringWithWeb:(NSString *)infor { NSString *emailRegex = @"[a-zA-z]+://.*"; ...

  3. PacBio软件总览 - 初级分析

    PacBio® RS Software Overview PacBio运行的整个流程是什么?每一步都用到了什么软件? PacBio软件套件 RS Remote:Design runs remotely ...

  4. 解决xshell 中文乱码

    在xshell命令行里面 输入:  locale输出: LANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_NUMERIC="zh_CN.U ...

  5. iOS 静态类库 打包 C,C++文件及和OC混编

    iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 ...

  6. flasCC技术点记录

    [待测试特性] 一.C接口导出相关 1.重载函数. 2.虚函数. 3.template相关 二.内存相关 1.as直接往c分配的内存写数据. 2.c直接往as对象写数据. 三.C访问AS 1.访问as ...

  7. C# winform程序怎么打包成安装项目(图解)

    1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图) 此主题相关图片如下: 2:安装向导 关闭后打开安 ...

  8. Anagrams [LeetCode]

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  9. windows下修改mysql用户名和密码

    1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld-nt --skip-grant-tables回车.如果没有出现提示信息,那就对了. 4.再开一个 ...

  10. ThoughtWorks微服务架构交流心得

      ThoughtWorks微服务架构交流心得: (1)<人月神话>中谈到软件开发没有银弹,根源在于软件所解决的领域问题本身固有的复杂性,微服务正是从领域问题角度上进行服务拆分,来降低软件 ...