常用DOS命令---基础篇
1.1 echo rem cd dir****命令
-------------------------------------------------------------------------------------------
一、显示信息:echo
1。输出提示信息
格式:echo 你要输出的信息
例1
echo hello,world
echo i will come back
pause
执行显示:
C:\bat>echo hello,world
hello,world
C:\bat>echo i will come back
i will come back
C:\bat>pause
请按任意键继续. . .
不显示写了什么命令----echo的第二种用法
2。关闭该命令的回显
格式:@ 放在命令前面
例2
@echo hello,world
@echo i will come back
pause
执行显示:
hello,world
i will come back
C:\bat>pause
请按任意键继续. . .
-------------------------------------------------------------------------------------------
3。打开回显或关闭回显功能
格式:echo [{ on|off }]
如果在批处命令前加上echo off,那么将会关闭批处中的命令回显。要是不想显示echo off命令本身,可以把@加在echo off前面。
例3
@echo off
echo hello,world
echo i will come back
pause
执行显示:
hello,world
i will come back
请按任意键继续. . .
在批处理前面加上@echo off ,它将使所有命令不再显示命令本身,当然也包括了echo off 命令本身也不会回显了。
-------------------------------------------------------------------------------------------
4。输出空行,即相当于输入一个回车
格式:echo.
注意命令中的“.”要紧跟在ECHO后面,中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;”/]+\ 这些任一符号替代。
例4
@echo off
echo 我在写批处理教程
echo.
echo 你看到上面有空一行么?
pause
执行显示:
我在写批处理教程
你看到上面有空一行么?
请按任意键继续. . .
命令ECHO.输出的回车,经DOS管道转向可以作为其它命令的输入,比如echo.|time即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态。
-------------------------------------------------------------------------------------------
5。答复命令中的提问
格式:ECHO 回复|命令表达式
作用:通过管道命令 | 把“回复”作为输入传导给后面的“命令表达式”,并作为“命令表达式”的输入。(注意,管道命令|的输入方法(和linux基本相同),shift键 \)
例5
@echo off
rd /s c:\abc
pause
执行显示:
c:\abc, 是否确认(Y/N)?
这里abc是一个不为空的文件夹,用rd 命令删除时它将会询问你Y或N,要手动的输入Y/N了。把批处改一下,这时系统将会自动帮助 把Y输入确认了
例6
@echo off
echo Y|rd /s c:\abc
pause
-------------------------------------------------------------------------------------------
6。建立新文件或增加文件内容
格式:echo 文件内容>文件名
例7
@echo off
echo 123>myfile.txt
pause
在当前目录下建立了一个myfile.txt文件,文件的内容为123。如果想要建立一个空的新文件,那可以试一下这个
例8
@echo off
echo. >myfile.txt
pause
注:上面所有实例中的pause是暂停命令,主要是用来暂停演示
-------------------------------------------------------------------------------------------
二、注释语句:rem
rem 为注释命令,一般用来给程序加上注解,该命令后的内容不被执行,但能回显。
例1
@echo off
echo 这是例1哦!
rem 上面的echo 语句用于显示提示。
pause
另外 :: 也可以起到 rem 的注释作用, 而且更简洁有效; 但有两点需要注意!
第一, 任何以冒号:开头的字符行,在批处理中都被视作标号, 而直接忽略其后的所有内容。
有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。
无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释
作用,所以 :: 常被用作注释符号,其实 : 也可起注释作用。
例2
@echo off
echo 这是例2哦!
::上面的echo 语句用于显示提示。
pause
第二, 与 rem 不同的是, :: 后的字符行在执行时不会回显, 无论是否用echo on 打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 因此, rem 在某些场合下比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中。
-------------------------------------------------------------------------------------------
三、目录切换:cd
1。同一个分区的切换
目录切换格式:格式:CD [盘符][路径]
如果当前目录是C:\Documents and Settings\mzybar,如果要切换到同一分区下不同的目录,请看下面的例子。(注:下面例子中的>表示命令行下的提示符,>前面的表示当前目录。)
例1
切换到C:\WINDOWS目录
C:\Documents and Settings\mzybar>
cd C:\WINDOWS
C:\WINDOWS>
例2
切换到C:\WINDOWS\system32目录
C:\Documents and Settings\mzybar>
cd C:\WINDOWS\system32
C:\WINDOWS\system32>
如果当前目录是C:\WINDOWS\system32,要返回到上一层目录,即返回到C:\WINDOWS时,可以这样:
例3
C:\WINDOWS\system32>
cd..
C:\WINDOWS>
也可以cd C:\WINDOWS或者C:
如果当前目录是C:\WINDOWS\system32, 要返回根目录,即返回到C:\时,你可以试下这个:
例4
C:\WINDOWS\system32>
cd
C:\ >
在这里返回根目录时,用的是cd\命令,当然也可以cd c:\
在DOS命令中.、..和\都是表示相对路径的,.是当前目录,..是上一层目录,而\则表示根目录。
cd.
例5
C:\WINDOWS\system32>
cd.
C:\WINDOWS\system32>
当输入cd.后还是在原来的位置
------------------------------------------------------------------------------------------2。不同分区的切换
格式:格式:CD /d [盘符][路径]
如果当前目录是C:\Documents and Settings\mzybar,需要切换到其它分区目录
例1
切换到D:\123\abc
C:\Documents and Settings\mzybar>
cd /d d:\123\abc
D:\123\abc>
如果要切换到D盘的根目录
例2
C:\Documents and Settings\mzybar>
D:
D:>
3。CD 的另一个用途:显示当前的完整路径,一般用通过 %cd% 加以引用。
例1
@echo off
echo 当前路径是 %cd%
pause
执行显示的是当前的完整路径。
-------------------------------------------------------------------------------------------
四、列文件名:dir
显示目录中的文件和子目录列表。
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
[drive:][path][filename] 指定要列出的驱动器、目录和/或文件。
/A 显示具有指定属性的文件。
attributes D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
停用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
sortorder N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 颠倒顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域。
timefield C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 用四位数字显示年
---------------------------------------------------------------------------------------- 常用参数
1。列出c:\windows下的目录及文件
格式:DIR [drive:][path][filename]
例1
dir c:\windows
缺点——当列表中的目录及文件过多时就无法完全显示,可以通过/p参数解决这个问题。
/P 在每个信息屏幕后暂停。
例2
dir /p c:\windows
在命令最后加上一个参数“/p”(即“page”页的缩写),列文件时就会使用分页显示的方式,即列出一屏的目录及文件后,提示“按任意键继续...”,按任意键后则显示下一屏。这样就可以逐屏查看了!
/B 使用空格式(没有标题信息或摘要)。
例3
dir /b c:
在查看时,发现列出来的文件都带有日期,时间,创建者等信息,可以在命令后加上/b参数,让它只列出文件名称。
-------------------------------------------------------------------------------------------
2。列出c:\下指定属性的文件
格式:DIR /a: attributes (这里的:号可以省略)
attributes D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 - 表示“否”的前缀
例1
dir /a c:
列出C:\下所有的文件。
例2
dir /ah c:
列出隐含的文件(包含文件和文件夹)。
例3
dir /ad c:
列出C:\下所有的文件夹。
例4
dir /ad-h c:
列出C:\下所有的文件夹,但不包含隐含的文件夹。
-------------------------------------------------------------------------------------------
3。按分类列出c:\下的文件
格式:DIR /o: sortorder (这里的:号可以省略)
sortorder N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 颠倒顺序的前缀
例1
dir /on c:
/o:排序方式 参数指定了dir命令显示命令结果时的排序方式,排序方式设为“n”即代表按照文件名的字母顺序排列
(从A~Z,以此类推)。
例2
dir /ogn c:
优先列出文件夹,并且文件夹和文件都按字母顺序排列。
★“/o”和“/a”都可以省略其后的冒号“:”,但之间不能留有空格。如“/o:n”省略后的形式应为“/on”。
1.2 attrib del copy xcopy命令
-------------------------------------------------------------------------------------------
一、设置文件属性:attrib
显示或更改文件属性。
ATTRIB [ R | -R] [ A | -A ] [ S | -S] [ H | -H] [[drive:] [path] filename] [/S [/D]]
设置属性。
- 清除属性。
R 只读文件属性。
A 存档文件属性。
S 系统文件属性。
H 隐藏文件属性。
[drive:][path][filename] 指定要处理的文件属性。
/S 处理当前文件夹及其子文件夹中的匹配文件。
/D 也处理文件夹。
-------------------------------------------------------------------------------------------
1。查看文件的文件属性
格式:ATTRIB [drive:][path][filename]
例1,
attrib d:\ pagefile.sys
查看d:\ pagefile.sys文件的属性。
-------------------------------------------------------------------------------------------
2。修改文件的属性。
格式:attrib 属性
例1,
attrib –h d:\ pagefile.sys
消除d:\ pagefile.sys的“隐藏”属性。
例2,
attrib s h d:\ pagefile.sys
给d:\ pagefile.sys设置“系统”和“隐藏”属性。
-------------------------------------------------------------------------------------------
3。批量文件处理
例1,
attrib h d:\123*.bat /s
通过/s参数可批量将d:\123及其子目录下的所有bat文件设置为“隐藏”属性.
例2,
attrib h d:\123 /s /d
将d:\123及其下所有同名为123的子目录设置为“隐藏”属性.参数/d必须在批量设置文件属性的同时,对指定目录及其下所有子目录进行文件属性操作。参数/d可以理解为“directory”(目录),也就是说/d 必需和/s一起使用。
-------------------------------------------------------------------------------------------
备注
“attrib h d:\123 /s /d”和“attrib h d:\123*.* /s /d”的区别
前者只有d:\123以及它同名的子目录设为了“隐藏”,而其它文件及子目录都没有设置“隐藏”。
后者则将d:\123下的所有文件及子目录设置了“隐藏”属性,但d:\123目录没有设置“隐藏”属性。
-------------------------------------------------------------------------------------------
二、删除命令:del
删除一个或数个文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names 指定一个或数个文件或目录列表。通配符可被用来
删除多个文件。如果指定了一个目录,目录中的所
有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 从所有子目录删除指定文件。
/Q 安静模式。删除全局通配符时,不要求确认。
/A 根据属性选择要删除的文件。
attributes R 只读文件 S 系统文件
H 隐藏文件 A 存档文件
-------------------------------------------------------------------------------------------
基本格式:DEL [drive:][path][filename]
例1,
del d:\123\abc.txt
删除abc.txt
-------------------------------------------------------------------------------------------
/P 删除每一个文件之前提示确认。
例2,
del /p d:\123*.*
删除d:\123目录下所有文件,如果想让它在删除前都询问是否删除,可以加上/p参数,防止误删除。
-------------------------------------------------------------------------------------------
/S 从所有子目录删除指定文件。
例3,
del /s d:\123*.*
删除d:\123目录及其子目录下所有文件。通过使用/s参数后,del命令就会在指定目录(如未指定则在当前目录)及其子目录中搜索所有指定文件名的文件并删
除。
-------------------------------------------------------------------------------------------
/Q 安静模式。删除全局通配符时,不要求确认。
例4,
del /s /q d:\123*.*
删除d:\123目录及其子目录下所有文件。
通过/q参数则无需确认直接删除,在使用此参数时要小心!!
/Q 安静模式。删除全局通配符时,不要求确认。
/A 根据属性选择要删除的文件。
例5,
del /ar /s d:\123*.*
删除d:\123目录及其子目录下所有只读属性的文件。
这里 通过/a:attributes 参数对指定属性的文件选择删除。文件属性attributes,可选的有r(只读)、s(系统)、h(隐藏)、a(存档)。
三、复制文件:copy
Copy只能复制文件,不能复制文件夹。
1。单个文件的复制
格式:copy source[drive:][path][filename] [destination [drive:][path][filename]]
即copy 要复制的源文件(包括路径和文件名) 文件复制的目标路径[\文件名] [destination [drive:][path] [filename]]缺省时则为当前目录。
例1,
copy c:\123.txt d:
把123.txt复制到d:\目录下。如果此操作成功,命令行窗口中会提示“已复制 1个文件”。
例2,
copy c:\123.txt d:\abc.bat
把123.txt复制到d:\目录下,并把它修改为abc.bat,这里修改了文件名和它的格式。
例3,
copy .\123
把当前目录下的123子目录中的文件全部拷到当前目录。
2。批量复制文件
例1,
copy c:\123 d:\abc
将c:\123 目录中所有文件复制到d:\abc目录中.
例2,
copy c:\123*.rm d:\abc /y
将c:\123 目录中所有rm格式的文件复制到d:\abc目录中,当目标目录中已经存在了和源目录中即将复制的文件相同文件名的文件时,就会出现如“改写x:\xx吗(Yes/No/All):”这样的提示,让你选择是覆盖、不覆盖还是全部覆盖,通过参数/y(复制单个文件或批量复制时皆可使用),可以实现重名文件无须确认直接覆盖。
-------------------------------------------------------------------------------------------
3。合并文件
格式:copy /b 文件1+文件2+……文件N 合并后的文件名
例1,
copy /b d:\1.mp3 d:\2.mp3 e:\3.mp3
把1.mp3和2.mp3合并成3.mp3。
例2,
copy /b d:\1.txt d:\2.mp3
把1.txt和2.mp3合并,这里没有指定合成后的文件名哦,缺省情况下,合并后的文件名是命令中的第一个文件的名。
在这里,即把2.mp3合并进了1.txt。
-------------------------------------------------------------------------------------------
★在尾部隐藏了文本数据的图片文件,在使用其他软件进行编辑并保存后,隐藏的文本数据有可能会丢失。
★MP3文件在使用此方法连接后,能实现连续播放。
★合并图片/歌曲这样的二进制文件必须使用/b参数(b代表Binary,二进制),否则合并将会失败;另一个合并参是/a(a代表ASCII,文本文件),只能用于纯文本的合并。两参数不能同时使用,二进制方式可以合并文本和二进制文件,而文本方式则只能合并文本。
-------------------------------------------------------------------------------------------
四、复制文件(夹):xcopy
复制文件和目录树。
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/EXCLUDE:file1[ file2][ file3]...]
Source
必需的。指定要复制的文件的位置和名称。该参数必须包含驱动器或路径。
Destination可省略。指定要复制的文件的目标。该参数可以包含驱动器盘符和冒号、目录名、文件名或者它们的组合。如果省略 Destination,xcopy 命令将文件复制到当前目录。
-------------------------------------------------------------------------------------------
常用的xcopy参数
/S 复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。
例1,
xcopy /s d:\123 e:\kkk
复制d:\123目录下所有文件(夹)到e:\kkk,不包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)
-------------------------------------------------------------------------------------------
/E 复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。
例2,
xcopy /e d:\123 e:\kkk
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)
-------------------------------------------------------------------------------------------
/H 复制具有隐藏和系统文件属性的文件。默认情况下xcopy 不复制隐藏或系统文件。
例3,
xcopy /e /h d:\123 e:\kkk
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。加上了/h参数后,xcopy 复制隐藏或系统的文件
-------------------------------------------------------------------------------------------
/T 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 选项。
-------------------------------------------------------------------------------------------
/Y 禁止提示您确认要覆盖现存的目标文件。
当目标目录中已经存在了和源目录中即将复制的文件相同文件名的时候,就会出现“改写 X:\XXX (Yes/No/All)?”
这样的提示,让你选择是覆盖、不覆盖还是全部覆盖时,通过参数/y,可以实现重名文件无须确认直接覆盖。
-------------------------------------------------------------------------------------------
★注意指定 Destination 是文件还是目录。
如果 Destination 不包含现有目录且不以反斜杠 () 结尾,会出现下列消息:
Does destination specify a file name
or directory name on the target
(F = file, D = directory)?
系统将会询问你
目标 X:\XXX 是文件名还是目录名
(F = 文件,D = 目录)?
如果要将一个或多个文件复制到一个文件,请按 F。如果要将一个或多个文件复制到一个目录,请按 D。
-------------------------------------------------------------------------------------------
备注
xcopy /e d:\123 e:\kkk\ 和 xcopy /e d:\123 e:\kkk 两者之间的不同
两者都是复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录,但前者不会询问目标e:\kkk 是文件名还是目录名(F = 文件,D = 目录)?
1.3 md rd ren move命令
-----------------------------------------------------------------------------------------------------------------------------------------------------------
一.创建文件夹:md
md命令用于创建文件夹,下面例子中的路径是可以缺省的,如果缺省则在当前目录下创建新文件夹;如果创建的新文件夹及其路径带有空格或特殊符号的,要用双引号括起来。
-------------------------------------------------------------------------------------------
1.创建单个文件夹
格式:MD [路径]目录
例1
md d:\abc
在D盘下建立一个名为abc的文件夹。
例2
md abc
这里为缺省路径,则在当前目录下创建一个名为abc的文件夹。
例3
md "d:\my game"
在D盘下建立一个名为my game的文件夹。
对于新建的文件夹名称中包含有空格或是特殊符号的,一定要用双引号” “把文件夹名括起来。
例4
md "C:\Documents and Settings\456^ 789"
在C:\Documents and Settings下建立一个名为456^ 789的文件夹,由于路径中有空格,所以 用双引号" "把路径
和文件夹名一起括起来了。
-------------------------------------------------------------------------------------------
2.同时创建多个目录
格式:md [路径]目录1 [路径]目录2 [路径]目录3……
例5
md abc D:\gmae\123 abcd
在当前目录下建立abc和abcd两个文件,同时D:\gmae下也建立一个文件夹123。
-------------------------------------------------------------------------------------------
3.创建多级目录
格式:md [路径]目录1\目录2\目录3\…
假如 要在D盘下建立文件夹abc,然后在abc中建新文件夹abcd,接着再在abcd中建文件夹abcde,有没有一个命令可以
一次性创建
例6
md d:\abc\abcd\abcde
-------------------------------------------------------------------------------------------
二.删除文件夹:rd
删除一个目录。
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S 除目录本身外,还将删除指定目录下的所有子目录文件。用于删除目录树。
/Q 安静模式,带 /S 删除目录树时不要求确认
-------------------------------------------------------------------------------------------
在不加任何参数时,rd命令只能删除空的文件夹。
例1.
rd d:\123
rd abc
第一个是删除D盘下的空文件夹123。第二个是删除当前目录下的空文件夹abc。
-------------------------------------------------------------------------------------------
/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
例2.
rd /s d:\123
如果文件夹123不为空,则通过/S参数,可删除文件夹123。
-------------------------------------------------------------------------------------------
/Q 安静模式,带 /S 删除目录树时不要求确认。
例3.
rd /s /q d:\123
在使用/S参数时,系统会提示: d:\123 是否确认(Y/N 此时通过/Q参数可以使其不用询问而直接删除。
-------------------------------------------------------------------------------------------
三.重命名文件(夹):ren
重命名文件。
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
filename1的路径可以省略,缺省情况下为当前目录。filename2只能是文件名,不能使用任何路径。
-------------------------------------------------------------------------------------------
1.单个文件的重命名
例1
ren d:\123.txt 456.bat
把123.txt 重命名为456并把后缀名修改为bat。
例2
ren 123.txt 456.bat
缺省路径情况下,把当前目录下的123.txt重命名为456.bat。
-------------------------------------------------------------------------------------------
2.批量重命名
通过和?这两个通配符来批量重命名。表示任意多个字符,?表示一个字符。
例3
ren *.bat *.txt
把后缀名为bat的文件批量更改为txt后缀后的文件。
-------------------------------------------------------------------------------------------
四.移动文件(夹):move
移动文件并重命名文件和目录。
要移动至少一个文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
要重命名一个目录:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
[drive:][path]filename1 指定您想移动的文件位置和名称。
destination 指定文件的新位置。目标可包含一个驱动器号
和冒号、一个目录名或组合。如果只移动一个文件
并在移动时将其重命名,您还可以包括文件名。
[drive:][path]dirname1 指定要重命名的目录。
dirname2 指定目录的新名称。
/Y 取消确认改写一个现有目标文件的提示。
/-Y 对确认改写一个现有目标文件发出提示。
-------------------------------------------------------------------------------------------
1.移动文件(夹)
基本格式:MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
[drive:][path]filename1[,...]
想要移动的文件(夹)可以使用相对路径,也可以使用绝对路径,缺省路径情况下默认为当前目录。
Destination 只能是目录路径, 可以使用相对路径,也可以使用绝对路径,缺省路径情况下默认为当前目录。
例1
move d:\abc d:\abcd
如果把文件夹abc移到文件夹abcd内。
例2
move 123.txt abc
把当前目录下的123.txt移动到当前文件夹abc内。这里都使用了相对路径,缺省路径情况下默认为当前目录。
例3
move 123.txt e:\abc
把当前目录下的123.txt移动到e:\abc目录下。
-------------------------------------------------------------------------------------------
2.重命名文件(夹)
例4
move d:\abc d:\abcd
这里要注意一下,如果目标文件夹abcd不存在,则把abc移到d:\下,并把自身名称更改为abcd。
利用这一特性,move命令具备重命名功能。
例5
move d:\123.txt d:\abc\456.txt
如果 456.txt存在,系统将会提示你:改写 D:\456.txt 吗? (Yes/No/All):
当你输入Y后则123.txt会覆盖456.txt。如果456.txt不存在,则把123.txt移到d:\abc目录下,并重命名为456.txt。
例6
move /y 123.txt 456.txt
如果123.txt和456.txt都存在,通过/y参数后,系统不会提示你,而直接把123.txt覆盖456.txt。
例7
move 123.txt e:\abc\456.txt
对于跨区移动,如果456.txt存在会提示:文件存在。命令不会执行;如果456.txt不存在,则把123.txt移到e:\abc
目录下,并重命名为456.txt。
-------------------------------------------------------------------------------------------
★MOVE命令可以跨分区移动文件,却不可以跨分区移动文件夹。 ★对于跨分区移动文件时,如果目标位置存在和将要移动的文件同名时,系统会提示:“文件存在” 最后,命令将不会执行。 ★对于隐藏或系统属性的文件,只有把它们的属性去除后,move命令才会执行。
总结
对于move A B这样的模式
1、如果A、B同为文件夹名,
①如果B存在,则把A移动到B目录下。(如例1);
②如果B不存在,则把A移动到B所在的目录下,同时重命名为B。(如例4)。
2、如果A为文件名,B为文件夹名,
① 将把A移动到B目录下。(如例2,例3);
② 如果B文件夹内有和A文件同名的:
I A和B为同一分区,则提示:是否覆盖/不覆盖/全部覆盖?
II A和B为不同分区,则提示:文件存在。不做任何操作!
3、如果A、B同为文件名,
①A和B为同一分区,如果B存在,则系统会提示你是否将把A重命名为B;如果B不存在就把A移动到B所在的目录下
的同时,重命名 为B。(如例5);
②A和B为不同分区,如果B存在,则命令不执行;如果B不存在,则把A移动到B所在的目录下并重命名为B。(如例
1.4 find findstr命令
-------------------------------------------------------------------------------------------
一.字符串查找:find
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。 "string" 指定要搜索的文字串,[drive:][path]filename 指定要搜索的文件。
-------------------------------------------------------------------------------------------
基本格式:find "要查找的字符串" 要查找的文件(不在当前目录则需要给出完整路径)
例1
find "abc" d:\abc.txt
在abc.txt中查找字符串abc的行。
-------------------------------------------------------------------------------------------
/I 搜索字符串时忽略大小写。
例2
find /i "abc" d:\abc.txt
参数/i代表的是“Ignore”(忽略),也就是忽略大小写。通过/I 参数可以不区分要查找的字符串“abc”的大小写。
-------------------------------------------------------------------------------------------
/N 显示行号。
例3
find /n "abc" d:\abc.txt
参数/n代表英语单词“Number”(号码).。通过/n参数 可以查找到字符串"abc"所在的行号。
-------------------------------------------------------------------------------------------
/C 仅显示包含字符串的行数。
例4
find /c "abc" d:\abc.txt
参数/c是英语单词“Count”(计数)的缩写。通过/c参数 可以统计包含"abc"字符串的行数。
-------------------------------------------------------------------------------------------
/V 显示所有未包含指定字符串的行。
例5
find /v "abc" d:\abc.txt
这个参数用于找出文件中不包含指定字符串的行。在这里表示查找不包含"abc"字符串的行。
注意:find命令中要查找的字符串一字要用双引号" "括起来。
-------------------------------------------------------------------------------------------
二.字符串查找增强:findstr
在文件中寻找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索
匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename 指定要查找的文件。
除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 在文件 x.y 寻找 "hello there"。
-------------------------------------------------------------------------------------------
1.基本格式:findstr " strings " [drive:][path]filename
Strings 是要查找的内容。
[rive:][path]filename 指定要查找的文件,路径可缺省,缺省情况下为当前目录。
例1
findstr "icq" 123.txt
在123.txt中查找包含有“icq”这三个字符串的行。
-------------------------------------------------------------------------------------------
/I 指定搜索不分大小写。
例2
findstr /i "MSN" 123.txt
在123.txt中查找包含有“MSN”这三个字符的行,且不区分大小写。
-------------------------------------------------------------------------------------------
★/R 将搜索字符串作为正则表达式使用。参数/R 强调以正则表达式规则来解读字符串。R - Right 右即为正。 都说右手是正手,因此引申为右为正,左为反。
例3
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多个字符串间用空格隔格开。
-------------------------------------------------------------------------------------------
/S 在当前目录和所有子目录中搜索。
例4
findstr /s /i "MSN" *.txt
在当前目录和所有子目录中的txt文件中搜索字符串"MSN"(不区分字母大小写)。
-------------------------------------------------------------------------------------------
/C:string 使用指定字符串作为文字搜索字符串。
例5
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”这几个字符的行。注意,这里“icq msn”是一整体的。
此参数多用于查找含有空格的字符串。
-------------------------------------------------------------------------------------------
★在使用 findstr "我 你 他" test.txt 的时候,并不能查找到内容,但是,加上开关 /i 或者 /r 之后就正确无误了,可能是在查找多个纯中文字符串的时候的一个bug吧;单个的纯中文字符串没有任何问题。
-------------------------------------------------------------------------------------------
2.findstr 命令中正则表达式的用法规则
一般表达式的快速参考:
. 通配符: 任何字符
重复: 以前字符或类别出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类别: 任何在字符集中的字符
[^class] 补字符类别: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
-------------------------------------------------------------------------------------------
● 通配符和重复符规则,即 . 和 *
通配符,即一个句点,代表任何一个字符,而且只能是一个,包括字母、数字、半角符号还有空格。重复符,即型号* 代表前面字母的出现次数(出现次数从0到多次,0表示没有)。
findstr . 123.txt 或 findstr "." 123.txt
在文件123.txt中查找任意字符,不包括空行。
例6
findstr .* 2.txt 或 findstr ".*" 2.txt
在文件123.txt中查找任意字符,包括空行。
例7
findstr ac* 123.txt
在文件123.txt中查找出现一个“a”字符串,以及a后面出现过0次或者任意次c的字符行。
如:
a
ac
acc
addc
等都匹配。
例8
findstr ak5* 123.txt
在文件123.txt中查找出现一个“ak”字符串,以及ak后面出现过0次或者任意次5的字符行。如:
ak
ak5
akbbb
ak125
ak555
等都匹配。
-------------------------------------------------------------------------------------------
●行首、行尾符规则,即 ^ 和 $
例9
findstr "^step" 123.txt
在文件123.txt中查找行首为step字符串的行。
如:
stepkdka
step 456
这两行都匹配的。
例10
findstr "step$" 123.txt
在文件123.txt中查找行尾为step字符串的行。
如:
123 dstep
123step
这两行也匹配的。
例11
findstr "^step$" 123.txt
在文件123.txt中查找行首为step,且行尾也为step的行,即step独自一行。
-------------------------------------------------------------------------------------------
● 字符集规则,即[class]
①表示含有集里的任意一个字符的即匹配。
②该字符集里的元素可以是字母和数字和一般的半角字符,如:}{ ,.][等,但双引号"不被识别。不能是汉字, 汉字
不被正确解释(汉字不是ASCII码)。
如果在字符集内插入通配符和重复符号,即"[.*]"将会把. 和 *视为普通字符,没有通配和重复的含义。
例12
findstr "[0-9]" 123.txt
在文件123.txt中查找数字0-9的任意之一的行。
如:
4kkb
1 lkka cc
这两行都匹配。
例13
findstr "[a-zA-Z]" 123.txt
在文件123.txt中查找包括任意字母行。
例14
findstr "[abcezy]" 2.txt
在文件123.txt中查找包括a b c e z y其中任意一字母的行。
例15
findstr "[a-fl-z]" 2.txt
在文件123.txt中查找小写字符a到f 或l到z的任意一字母的行,但不包含g h I j k这几个字母。
例16
findstr "M[abc][123]Y" 2.txt
在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。
-------------------------------------------------------------------------------------------
● 减法规则,即[^class]
例17
findstr "[^0-9]" 123.txt
如果是纯数字的行便过滤掉,例如2323423423 这样的字符串被过滤,345hh888这样的形式则过滤不了。
注意,纯数字的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!
例18
findstr "[^a-z]" 123.txt
如果是纯字母的行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf 这样的字符将被过滤,如果是sdfksjdkf99999这样的形
式则过滤不了。
注意,纯字母的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!
例19
findstr "[^add]" 123.txt
过滤仅含有由a d d三个字母组成的纯字母字符串的行。
如:
a
ad
ddaadd
dd
这些行都会被过滤。
注意,仅含有由a d d三个字母组成的纯字母字符串的行不能有空格,不论行首行尾或者是行中都不能有空格,否则
过滤失败!
例20
findstr "[^echo]" 123.txt
过滤仅含有由e c h o 四个字母组成的纯字母字符串的行。
如:
e
c
ec
cho
chooo
这些行都会被过滤。
-------------------------------------------------------------------------------------------
●单词前缀后缀定位规则,即
该xyz可以是英文单词或数字,但不适用于汉字。符号 \ 理解为转义符,化解小于号和大于号的重定向命令含义。
该规则是匹配类似单个英文单词的。
例21
findstr "
如:
echo:kkk a add
jjkk echo
这两行都匹配。
(思考:为什么:echo也匹配?)
例22
findstr "echo>" 123.txt
所有含有以echo为后缀的字符串的行,都匹配。
如:
qq bbecho 这一行也匹配。
(思考:为什么kkkk echo:也匹配?)
例23
findstr "
这里是用来精确查找单词。查找单词end的行,
注意:
ended
cdkend
bcd-end-jjkk
这类词都不匹配。
(思考:为什么end echo和end也匹配?因为
-------------------------------------------------------------------------------------------
● 转义符 \
把表达式中的特殊字符(元字符)转化为普通字符。常见写法:
.
*
\
[
]??
-
例24
findstr ".abc" 123.txt
在文件123.txt中查找可以匹配“.abc”字符串的行,这里\。是把。给转义了。
例25
findstr "1\" 123.txt 或findstr "1\\" 123.txt
在文件123.txt中查找可以匹配“1\”字符串的行,这里\是把\给转义了。
★要查找的字符串含有\时,可以用\把\给转义;或者把\变成\\。如果目标字符串的\后面还有内容,则搜索字符串\除了要变成\(本身的转义要求),还可以在它后面再加一个字符,如\.
2 数个常用的网络命令
2.1ping ipconfig arp start shutdown taskkill 命令
-------------------------------------------------------------------------------------------
一.测试IP连接:ping
用来检查网络是否通畅或者网络连接速度的命令。在此, 只了解一些基本的参数就可以了。
-n count 发送count指定的Echo数据包数。
定义向目标IP发送数据包的次数,默认为4次。通过此命令可以收集到一些信息。如数据包返回的平均时间为多少,最快时间为多少,最慢时间为多少等等。
例1
C:\Documents and Settings\mzybar>ping -n 3 www.baidu.com
Pinging www.a.shifen.com [121.14.88.14] with 32 bytes of data:
Reply from 121.14.88.14: bytes=32 time=3ms TTL=57
Reply from 121.14.88.14: bytes=32 time=3ms TTL=57
Reply from 121.14.88.14: bytes=32 time=2ms TTL=57
Ping statistics for 121.14.88.14:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms
分析总结
Ping statistics for 121.14.88.14:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
从这里可以知道在给www.baidu.com发送3个数据包的过程当中,返回了3个,没有数据包丢失。
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms
这3个数据包当中返回速度最快为2ms,最慢为3ms,平均速度为2ms。
例2
ping -n 11 127.0.0.1 >nul
ping本机11次,可用于批处理延时10秒。命令中的>nul为屏蔽输出。
简短式可以写成:
ping -n 11 127.1 >nul
-------------------------------------------------------------------------------------------
-w timeout 指定超时间隔,单位为毫秒。
例3
ping 1 -n 1 -w 10000 2>nul 1>nul
批处中可以用于延时10秒。
-------------------------------------------------------------------------------------------
二.查看IP配置:ipconfig
由于批处理中经常对计算机的TCP/IP 配置信息的截取,这里 只讲一下/all参数就行了。
/all参数
作用:显示所有适配器的完整 TCP/IP 配置信息。当使用IPConfig时不带任何参数选项,那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。
例1
C:\Documents and Settings\mzybar>ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.73
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.254
这里显示的信息为:
1.计算机的本地连接名称为:本地连接
2.本机IP为:192.168.0.73
3.子网掩码为:255.255.255.0
4.默认网关为:192.168.0.254
例2
C:\Documents and Settings\mzybar>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : A-073 //计算机名称
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接: //计算机的本地连接名称
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8168/8111 PCI-E Gigabit E //网卡型号
thernet NIC
Physical Address. . . . . . . . . : 00-E0-4C-59-9B-57 //网卡的MAC地址
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.73 //IP地址
Subnet Mask . . . . . . . . . . . : 255.255.255.0 //子网掩码
Default Gateway . . . . . . . . . : 192.168.0.254 //默认网关地址
DNS Servers . . . . . . . . . . . : 61.144.56.100 //主DNS地址
202.96.128.166 //副DNS地址
当ipconfig 命令带有/all参数时将显示所有适配器的完整 TCP/IP 配置信息,如果计算机有多个网卡时,此命令都会将它们的信息一一列出来。
-------------------------------------------------------------------------------------------
三.解析地址:arp
显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。
-------------------------------------------------------------------------------------------
-a参数 或-g参数,用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项,而Windows用的是arp -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。
arp -a IP
如果 有多个网卡,那么使用arp –a 加上对应网卡的IP地址,就可以只显示与该网卡相关的ARP缓存项目。
缺省IP情况下,将显示所有当前 ARP 缓存表。
例1
C:\Documents and Settings\mzybar>arp -a
Interface: 192.168.0.20 --- 0x2
Internet Address Physical Address Type
192.168.0.1 00-1a-92-90-19-fe static
192.168.0.2 00-1a-92-90-19-eb static
192.168.0.3 00-1a-92-49-1c-a9 static
192.168.0.4 00-1a-92-90-19-32 static
192.168.0.5 00-1a-92-38-07-09 static
192.168.0.252 00-23-54-a9-f5-4a dynamic
192.168.0.253 00-1d-60-1d-aa-d1 dynamic
192.168.0.254 00-0a-eb-0d-96-ff dynamic
分析一下上面的数据:
Internet Address:代表 IP 地址。
Physical Address:代表网卡的物理地址,即网卡的MAC地址。
Type:代表ARP表的类型,“dynamic”为动态的;“static”为静态的。
-------------------------------------------------------------------------------------------
arp -s IP 物理地址
可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。通过此命令可以实现ARP绑定。
例2
arp -s 192.168.1.1 00-1a-92-90-19-fe
对192.168.1.1添加静态ARP实现ARP绑定。
-------------------------------------------------------------------------------------------
arp -d IP
使用本命令能够人工删除一个静态项目。可以输入arp -d命令,缺省IP情况下将删除当前计算机的arp表。
在对付ARP欺骗中, 一般先删除当前计算机的arp表,然后再实现ARP绑定。
例3
@echo off
arp –d
arp –s 192.168.0.1 00-1a-92-90-19-fe
arp –s 192.168.0.2 00-1a-92-90-19-eb
arp –s 192.168.0.3 00-1a-92-49-1c-a9
arp –s 192.168.0.4 00-1a-92-90-19-32
arp –s 192.168.0.5 00-1a-92-38-07-09
pause
-------------------------------------------------------------------------------------------
四.开启命令:start
基本格式:start “title” filename
其中title可以省略,filename如带有空格或是特殊符号的,用""括起来。
例1
start http://www.baidu.com
这里是打开百度,title省略了。
例2
start "" "%windir%\system32\NOTEPAD.EXE" "%userprofile%\桌面\abc.txt"
用NOTEPAD(记事本)打开 桌面上的abc.txt。
例3
start "" "%userprofile%\桌面\abc.doc"
这里start后面要加""才能启动文件abc.doc,否则不能启动。
如果start 后没有 " " 则表示把title省略了,此时文件名若有""的话start就会把它看作是标题,从而变成了省略文件名,就默认开启cmd了。所以在start后加上""就能防止这种意外的情况。
-------------------------------------------------------------------------------------------
参数/min和/max 使开启的窗口最小化和最大化。
例4
start /min "" "%windir%\system32\NOTEPAD.EXE" "%userprofile%\桌面\abc.txt"
用记事本最小化打开桌面的abc.txt。
-------------------------------------------------------------------------------------------
五.关闭或重启计算机:shutdown
用法: shutdown [-i | -l | -s | -r | -a][-f] [-m \computername][-t xx] [-c "comment"][-d up:xx:yy]
没有参数 显示此消息(与 ? 相同)
-i 显示 GUI 界面,必须是第一个选项
-l 注销(不能与选项 -m 一起使用)
-s 关闭此计算机
-r 关闭并重启动此计算机
-a 放弃系统关机
-m \computername 远程计算机关机/重启动/放弃
-t xx 设置关闭的超时为 xx 秒
-c "comment" 关闭注释(最大 127 个字符)
-f 强制运行的应用程序关闭而没有警告
-d [u][p]:xx:yy 关闭原因代码
u 是用户代码
p 是一个计划的关闭代码
xx 是一个主要原因代码(小于 256 的正整数)
yy 是一个次要原因代码(小于 65536 的正整数)
-----------------------------------------------------------------------------------------
例1
shutdown -l
该命令只能注销本机用户,对远程计算机不适用。
例2
at 12:00 shutdown -s
通过-s参数,在12:00执行关闭计算机。
例3
shutdown -r -t 60
60秒后重启计算机。这里是设置重启倒计时为60秒。如果没有设置时间则默认为30秒。
例4
shutdown -f -s -t 300
通过-f参数强制计算机300秒后关闭。
例5
shutdown -a
当 在遇到冲击波或震荡波病毒时,或是执行了上面的关机命令时, 可以运用shutdown -a 终止当前的关机进程,这样就可以避免关机而造成的损失了。
-------------------------------------------------------------------------------------------
六.关闭指定进程taskkill
Taskkill命令可以根据进程 ID 或图像名来结束一个或多个任务或进程。
/im ImageName
指定将终止的进程的图像名称。
例1
taskkill /im qq.exe
-------------------------------------------------------------------------------------------
/f process
指定将强制终止的进程。对于远程进程可忽略此参数,所有远程进程都将被强制终止。
例2
taskkill /f /im spoolsv.exe
-------------------------------------------------------------------------------------------
/pid process id 指定要终止的进程的PID
例3
taskkill /pid 1230 /pid 1241 /pid 1253
这里是终止PID 分别为 1230 1241 1253的进程。
2.2 数个常用的特殊符号
-------------------------------------------------------------------------------------------
一、重定向符 >、>>(和linux用法相同)
> 重定向符, 意思是传递并且覆盖,它所起的作用是将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台,即命令提示符)。
例1
echo hello120 >1.txt
新建立文件 1.txt,内容为”hello120” (注意:行尾有一空格,文件后有一空行)
例2
(echo hello120)>1.txt 新建立文件 1.txt,内容为”hello120” (注意:行尾无空格,但文件后有一空行)
>1.txt echo hello120 新建立文件 1.txt,内容为”hello120” (注意:行尾无空格,但文件后有一空行)
例3
>1.txt
注意:
如果1.txt原来有内容的话,在使用了> 重定向符命令后,将会被新的内容覆盖掉
>> 重定向符 将命令的输出结果追加到其后面的设备中去。这个符号的作用和>有点类似,但他们是有区别的 >>是传递并在文件的末尾追加,而>是覆盖。用法同>一样的。
例1
echo hello120 >>1.txt
如果1.txt不存在,则新建立文件 1.txt,内容为”hello120 ”;如果1.txt存在,则把内容为”hello120 ”追加
到其文末尾。
例2
echo hello> 1.txt
echo world>>1.txt
这时候 1.txt内容如下:
hello
world
-------------------------------------------------------------------------------------------
二、命令管道符 |
表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象,简而言之,就是把它之前的输出作为它之后的输入。
例1
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe
将tasklist(进程列表)用传递符"|" 传递给find 命令,执行查找QQ的进程。
例2
echo Y|rd /s c:\abc
通过管道命令|将echo y 的结果传给rd /s c:\abc 命令,从而达到自动输入y 的目的。
★注意,管道命令 | 的输入方法,shift键
-------------------------------------------------------------------------------------------
三、组合命令 &、&&、||
&、&&、|| 为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。
&符号允许同时执行多条命令,当第一个命令执行失败了,也不影响后边的命令执行。这里 & 两边的命令是顺序执行的,从前往后执行。
格式:第一条命令 & 第二条命令 [& 第三条命令...]
例1
dir z:\ & dir y:\ & dir c:
以上命令会连续显示z,y,c 盘的内容,不理会该盘是否存在。
-------------------------------------------------------------------------------------------
&&符号允许同时执行多条命令,当碰到执行出错的命令后将不再执行后面的命令,如果一直没有出错则一直执行完所有命令。
格式:第一条命令 && 第二条命令 [&& 第三条命令...]
例2
dir z:\ && dir y:\ && dir c:
这个命令和上面的类似,但区别是,前一个命令执行失败时,后边的命令就不会再执行了。
-----------------------------------------------------------------------------------------------------------------------------------------------------------||符号允许同时执行多条命令,当一条命令执行失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。
格式:第一条命令 || 第二条命令 [|| 第三条命令...]
例3
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe || echo 你开了QQ?我不信
通过&&和||两个符号可以认为把上例分成了三个命令:
第一个命令::tasklist | find /i "qq.exe"
第二个命令:taskkill /f /im qq.exe
第三个命令:echo 你开了QQ?我不信
分析总结
如果找不到QQ进程,即第一个命令执行失败,则 && 不会执行第二个命令:taskkill命令,由于taskkill 命令没有执行,视作第二个命令执行失败,则 || 将会执行第三个命令:echo 命令。如果找到QQ进程,即第一个命令执行成功,则 && 将会执行第二个命令:taskkill命令,由于第二个命令执行成功,
|| 将不会执行第三个命令:echo 命令。
-------------------------------------------------------------------------------------------
★管道命令 | | 的输入方法,输入两次shift键
★组合命令和重定向命令、管道命令一起使用必须注意优先级。管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令。
备注
把C 盘和 D 盘的文件和文件夹列出到a.txt 文件中。
有如下命令
dir c:\ && dir d:\ > a.txt
这样执行后a.txt 里只有D盘的信息!因为组合命令的优先级没有重定向命令的优先级高!所以命令在执行时将被分成两部分:dir c:\和dir d:\ > a.txt
这里要使用组合命令&&达到题目的要求, 可以这样写:
dir c:\ > a.txt && dir d:\ >> a.txt
这样,依据优先级高低,DOS 将把这句话分成以下两部分:dir c:\ > a.txt 和dir d:\ >> a.txt
当然, 也可以这样写:
dir c:\ > a.txt & dir d:\ >> a.txt
-------------------------------------------------------------------------------------------
四、转义字符 ^
一般而言,^ 以转义字符的身份出现。
因为在cmd环境中,有些字符具备特殊功能,如 >、>>表示重定向,| 表示管道,&、&&、|| 表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在
每个特殊字符前加上转义字符^。因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之类的格式来处理;另外,此转义字符还可以用作续行符号。
例1
@echo off
echo 这是^
一个^
句子
Pause
转义字符放在行尾可以起到续行符的作用的原因,因为每行末尾还有一个看不见的回车符,转义字符位于行尾时就让回车符失效了,从而起到了续行的作用。
-------------------------------------------------------------------------------------------
五、变量引导符 %
①当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%
例1
@echo off
set str=abc
echo 变量 str 的值是: %str%
pause
在屏幕上将显示这样的结果:
变量 str 的值是: abc
按任意键继续...
----------------------------------------------------------------------------------------------------------------------------------------------------------
②另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10
个数字,如%0、%1、%2 。。。
%0 表示批处理文件本身,包括完整的路径和扩展名
%1至%9 表示第一个参数至第九个参数
例2
@echo off
if defined str goto next
set str=
set /p str=请把文件拉到本窗口后回车:
call "%~0" %str%
pause
:next
cls
echo 本批处理文件完整路径为:"%~0"
echo 拖到本窗口的文件完整路径为:"%~1"
goto :eof
-------------------------------------------------------------------------------------------
③出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。
例如:在命令行窗口中,运行 set /a num=4%2 ,则结果将显示0,因为4除以2的余数为0;
如果保存为批处理文件,则此语句将略有改变:
例3
@echo off
set /a num=4%%2
echo 4除以2的余数为 %num%
pause
-------------------------------------------------------------------------------------------
④转义符号:如果要显示%本身时,需要在前面用%来转义。
例4
@echo off
echo 一个百分号:%%
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%
pause
-------------------------------------------------------------------------------------------
六、界定符 ""
①在表示带有空格或特殊符号的路径时常要用""来将路径括起来。
例1
cd /d cd "d:\program files^%*abc"
因为路径中带有空格和特殊符号,所以要用""将路径括起来。
-------------------------------------------------------------------------------------------
②表示其中的内容是一个完整的字符串。
例2
@echo off
set "var=abc 123"
echo %var%
pause
这里表示变量var的值为字符串“abc 123”。