目录
一、显示信息: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
请按任意键继续. . .
2、关闭该命令的回显
@echo hello,world
@echo i will come back
pause
执行显示:
hello,world
i will come back
C:\bat>pause
请按任意键继续. . .
3、打开回显或关闭回显功能
@echo off
echo hello,world
echo i will come back
pause
执行显示:
hello,world
i will come back
请按任意键继续. . .
4、输出空行,即相当于输入一个回车
格式:echo.
注意命令中的“.”要紧跟在ECHO后面,中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以
用,:;”/]+\ 这些任一符号替代。
二、注释语句:rem
@echo off
echo 这是例1哦!
rem 上面的echo 语句用于显示提示。
pause
另外 :: 也可以起到 rem 的注释作用, 而且更简洁有效;
@echo off
echo 这是例2哦!
::上面的echo 语句用于显示提示。
pause
与 rem 不同的是, :: 后的字符行在执行时不会回显, 无论是否用echo on 打开命令行回显状态,
因为命令解释器不认为他是一个有效的命令行
三、目录切换:cd
1、同一个分区的切换
目录切换格式:格式:CD [盘符][路径]
2、不同分区的切换
格式:格式:CD /d [盘符][路径]
3、显示当前的完整路径,一般用通过 %cd% 加以引用
@echo off
echo 当前路径是 %cd%
pause
执行显示的是当前的完整路径。
四、列文件名:dir
关于dir命令比较多, 在这里我们学习一些常用的就OK了
1、列出c:\windows下的目录及文件
格式:DIR [drive:][path][filename]
dir c:\windows
这种方法有明显的缺点——当列表中的目录及文件过多时就无法完全显示,我们将通过/p参数解决这个问题。
dir /p c:\windows
我们在命令最后加上一个参数“/p”(即“page”页的缩写),列文件时就会使用分页显示的方式,即列出一屏的目
录及文件后,提示“按任意键继续...”,按任意键后则显示下一屏。这样就可以逐屏查看了!
dir /b c:\windows
我们可以在命令后加上/b参数,让它只列出文,不显示日期,时间,创建者等信息件名称
2、列出c:\下指定属性的文件
格式:DIR /a: attributes (这里的:号可以省略)
attributes D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 - 表示“否”的前缀
例子:dir /ah c:\
列出隐含的文件(包含文件和文件夹)。
3、按分类列出c:\下的文件
格式:DIR /o: sortorder (这里的:号可以省略)
sortorder N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 颠倒顺序的前缀
例1:dir /on c:\
按照文件名的字母顺序排列(从A~Z)。
例2:dir /ogn c:\
优先列出文件夹,并且文件夹和文件都按字母顺序排列。
五、设置文件属性: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]
attrib d:\ pagefile.sys
查看d:\ pagefile.sys文件的属性。
2、修改文件的属性
attrib –h d:\ pagefile.sys
消除d:\ pagefile.sys的“隐藏”属性。
attrib s h d:\ pagefile.sys
给d:\ pagefile.sys设置“系统”和“隐藏”属性。
3、批量文件处理
attrib h d:\123\*.bat /s
通过/s参数可批量将d:\123及其子目录下的所有bat文件设置为“隐藏”属性.
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 存档文件
- 表示“否”的前缀
1、基本格式:DEL [drive:][path][filename]
del d:\123\abc.txt
删除abc.txt
2、/P 删除每一个文件之前提示确认。
del /p d:\123\*.*
删除d:\123目录下所有文件,如果你想让它在删除前都询问你是否删除,我们可以加上/p参数,防止误删除。
3、/S 从所有子目录删除指定文件。
del /s d:\123\*.*
删除d:\123目录及其子目录下所有文件。
通过使用/s参数后,del命令就会在指定目录(如未指定则在当前目录)及其子目录中搜索所有指定文件名的文件并删除。
4、/Q 安静模式。删除全局通配符时,不要求确认。
del /s /q d:\123\*.*
删除d:\123目录及其子目录下所有文件。
通过/q参数则无需确认直接删除,在使用此参数时要小心!!
5、/A 根据属性选择要删除的文件。
del /ar /s d:\123\*.*
删除d:\123目录及其子目录下所有只读属性的文件。
这里我们通过/a:attributes 参数对指定属性的文件选择删除。文件属性attributes,可选的有r(只读)、s(系统)
、h(隐藏)、a(存档)。
七、复制文件:copy
Copy只能复制文件,不能复制文件夹。
1、单个文件的复制
copy c:\123.txt d:\
把123.txt复制到d:\目录下。如果此操作成功,命令行窗口中会提示“已复制 1个文件”。
copy c:\123.txt d:\abc.bat
把123.txt复制到d:\目录下,并把它修改为abc.bat,这里修改了文件名和它的格式。
copy .\123
把当前目录下的123子目录中的文件全部拷到当前目录。
2、批量复制文件
格式:copy /b 文件1+文件2+……文件N 合并后的文件名
合并图片/歌曲这样的二进制文件必须使用/b参数(b代表Binary,二进制),否则合并将会失败;另一个合并参是/a
(a代表ASCII,文本文件),只能用于纯文本的合并
copy /b d:\1.mp3+d:\2.mp3 e:\3.mp3
把1.mp3和2.mp3合并成3.mp3。
copy /b *.txt all.txt
合并当前目录的所有txt文件为all.txt文件
八、复制文件(夹):xcopy
xcopy可使用的参数太多了,这里只选几个常用的来讲一下。
1、/S 复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。
xcopy /s d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,不包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)
2、/E 复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。
xcopy /e d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。(默认情况下,xcopy 不复制隐藏或系统文件)
3、/H 复制具有隐藏和系统文件属性的文件。默认情况下xcopy 不复制隐藏或系统文件。
xcopy /e /h d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录。加上了/h参数后,xcopy 复制隐藏或系统的文件
4、/T 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 选项。
5、/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。
九、创建文件夹:md
先说一下创建文件:
我们可以使用 cd>a.txt,type nul>a.txt,copy nul>a.txt 三种方式创建空文件;
用 echo [file content]>a.txt 创建非空文件
1、创建单个文件夹
md d:\abc
在D盘下建立一个名为abc的文件夹。
md abc
这里为缺省路径,则在当前目录下创建一个名为abc的文件夹。
md "d:\my game"
在D盘下建立一个名为my game的文件夹。
对于新建的文件夹名称中包含有空格或是特殊符号的,一定要用双引号” “把文件夹名括起来。
md "C:\Documents and Settings\456^ 789"
在C:\Documents and Settings下建立一个名为456^ 789的文件夹,由于路径中有空格,所以我们用双引号" "把路径
和文件夹名一起括起来了。
2、同时创建多个目录
md abc D:\gmae\123 abcd
在当前目录下建立abc和abcd两个文件,同时D:\gmae下也建立一个文件夹123。
3.创建多级目录
md d:\abc\abcd\abcde
在D盘下建立文件夹abc,然后在abc中建新文件夹abcd,接着再在abcd中建文件夹abcde
十、删除文件夹:rd
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S 除目录本身外,还将删除指定目录下的所有子目录和
文件。用于删除目录树。
/Q 安静模式,带 /S 删除目录树时不要求确认
1、在不加任何参数时,rd命令只能删除空的文件夹。
rd d:\123
rd abc
第一个是删除D盘下的空文件夹123。第二个是删除当前目录下的空文件夹abc。
2、/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
rd /s d:\123
如果文件夹123不为空,则通过/S参数,可删除文件夹123。
十一、重命名文件(夹):ren
1、单个文件的重命名
ren d:\123.txt 456.bat
把123.txt 重命名为456并把后缀名修改为bat。
2、批量重命名
通过*和?这两个通配符来批量重命名。*表示任意多个字符,?表示一个字符。
ren *.bat *.txt
把后缀名为bat的文件批量更改为txt后缀后的文件。
当文件具有隐藏属性或系统属性的时候,ren不能直接重命名,需要把文件的隐藏或系统属性去掉方可更名
十二、移动(重命名)文件(夹):move
1、移动文件(夹)
move 123.txt e:\abc
把当前目录下的123.txt移动到e:\abc目录下。
2、重命名文件(夹)
move d:\abc d:\abcd
这里要注意一下,如果目标文件夹abcd不存在,则把abc移到d:\下,并把自身名称更改为abcd。
利用这一特性,move命令具备重命名功能。
move [/y] 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。
通过/y参数设置不提示
move 123.txt e:\abc\456.txt
对于跨区移动,如果456.txt存在会提示:文件存在。命令不会执行;如果456.txt不存在,则把123.txt移到e:\abc
目录下,并重命名为456.txt。
十三、字符串查找:find
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename 指定要搜索的文件。
1、基本格式:find "string" [drive:][path]filename
find "abc" d:\abc.txt
在abc.txt中查找字符串abc的行。
2、/I 搜索字符串时忽略大小写。
find /i "abc" d:\abc.txt
参数/i代表的是“Ignore”(忽略),也就是忽略大小写。通过/I 参数可以不区分要查找的字符串“abc”的大小写。
...
十四、字符串查找增强: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 指定要查找的文件。
1、/R 将搜索字符串作为正则表达式使用。
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多个字符串间用空格隔格开。
2、/S 在当前目录和所有子目录中搜索。
findstr /s /i "MSN" *.txt
在当前目录和所有子目录中的txt文件中搜索字符串"MSN"(不区分字母大小写)。
3、/C:string 使用指定字符串作为文字搜索字符串。
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”这几个字符的行。注意,这里“icq msn”是一整体的。
此参数多用于查找含有空格的字符串。
4.findstr 命令中正则表达式的用法规则
. 通配符: 任何字符
* 重复: 以前字符或类别出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类别: 任何在字符集中的字符
[^class] 补字符类别: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
findstr ac* 123.txt
在文件123.txt中查找出现一个“a”字符串,以及a后面出现过0次或者任意次c的字符行。
findstr "^step" 123.txt
在文件123.txt中查找行首为step字符串的行。
findstr "step$" 123.txt
在文件123.txt中查找行尾为step字符串的行。
findstr "^step$" 123.txt
在文件123.txt中查找行首为step,且行尾也为step的行,即step独自一行。
findstr "[0-9]" 123.txt
在文件123.txt中查找数字0-9的任意之一的行。
findstr "[abcezy]" 2.txt
在文件123.txt中查找包括a b c e z y其中任意一字母的行。
findstr "[^0-9]" 123.txt
如果是纯数字的行便过滤掉,例如2323423423 这样的字符串被过滤,345hh888这样的形式则过滤不了。
注意,纯数字的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!
findstr "[^add]" 123.txt
过滤仅含有由a d d三个字母组成的纯字母字符串的行。
findstr "\<xx" 123.txt
所有含有以xx为前缀的字符串的行,都匹配。