Windows批处理程序编程学习笔记

DOS 专栏收录该内容
2 篇文章 0 订阅

Windows批处理学习笔记(基础篇)

第一章 从零开始认识批处理(what why how)

1.1 什么是Windows批处理?


批处理程序全名为 Batch file programming 是微软操作系统自带的原生开发语言,不需要构建任何环境即可运行,批处理程序是脚本程序,文件后缀名为 .bat
Batch file 批处理文件使用cmd.exe程序执行(简单来说就是dos命令

 

1.2 批处理能干什么?


在Windows系统下完成自动化操作,辅助完成复杂且机械性的操作提高工作效率,如批量改文件后缀、匹配规则删除指定文件、批量创建计算机病毒或者新建文件日志等应用场景。

 

1.3 批处理批处理程序怎么编写?


批处理程序可以使用文本编辑器即可轻松编写,无需安装其他开发工具。可以使用可以使用Windows系统自带的记事本编写(请保存为.bat后缀文件形式),可以使用第三方的文本编辑器编写,个人建议使用sublime text3软件编写(ST自带命令高亮提示)

 

1.4 批处理程序执行顺序?


从上到下,从左到右一条条依次执行!Windows命令参数不区分大小写!!!for 与 FOR 、/p 与 /P 结果是一样的 (参数除外:如for命令变量区分大小写)

 

1.5 批处理程序重要的头和尾

编写批处理文件通常带有以@echo off 开头的头部和以pause 结尾的尾部

标准首尾格式:

rem 以下的“rem” 后的为注释语句!
rem 从本行开始关闭回显功能,并显示当前行命令↓
@echo off

... ...(代码...)


rem pause语句会暂停批处理程序,并显示以下消息:请按任意键继续. . .↓ 若不使用pause停止,批处理程序会直接运行结束后关闭窗口,会出现类似于窗口闪退的效果。

pause 

扩展:如果需要关闭pause回显的"请按任意键继续..."可以使用 pause>nul 将输出重定向到空设备而不是控制台输出即可。(原因:pause命令没有任何参数,不能使用@pause屏蔽回显功能)


 

1.6 批处理命令基本格式

批处理命令的基本格式

以下是创建一个新计算机用户的操作:
命令 + 子命令 +    参数   + 相关操作 + 附加选项(可有可无,一般有默认值)
 net    user   test 1234    /add     /ACTIVE:{YES}



选项补充知识                       描述
      --------------------------------------------------------------------
   /ACTIVE:{YES | NO}         激活或取消激活帐户。如果该帐户处于非激活状态,
                              用户将无法访问服务器。默认设置为“YES”。

1.7 常用便捷命令

编写批处理程序中有以下几个常用的便捷命令方便编写:

1、命令帮助信息查看/? 和  命令详细信息查看 /help,或者help + 命令

2、清空屏幕 cls(cmd中编写过多无用命令时使用,清屏)

3、注释 rem 与 ::  ,以下介绍单行注释和块注释两种

单行注释 rem 与 ::(两种写法都是单行代码不执行,且结果一样,可以说::是rem的符号表示

多行注释写法1:使用goto命令自循环,但代码块内不写代码,则goto和代码块zhushi之间可以添加文字注释(此时他们之间是可以执行命令的,所以注释记得不带命令)

@echo off

goto zhushi
我是注释。我是注释。我是注释
:zhushi

echo 你好,我叫小明

pause>nul

多行注释写法2:多个rem或者::编写(重复性较大)

@echo off

rem 我是注释1
rem 我是注释2
rem ... ...

echo 你好,我叫小明

pause>nul

1.8 批处理之字符操作相关命令

1、 echo命令,显示消息,或者启用或关闭命令回显

rem 输入不带参数的echo会显示当前回显的状态

echo
rem echo命令常用于在控制台中输出运算结果

echo 你好,我叫小明!
rem echo 开启回显

echo on

rem echo 关闭回显

echo off

2、 type命令,显示文本文件的内容

rem type命令格式为:TYPE [drive:][path]filename

rem drive代表盘符,path代表相关路径,filename代表文件名

rem 文件详细路径可加可不加,不加则只能识别到当前目录下的文件!

rem 查看aaa.txt文本内容
type aaa.txt

3、sort排序命令,进行字符串排序,以下针对常用的参数进行讲解

rem 不带任何参数的sort命令,比较第一个字符的大小(字母不区分大小写)
rem 默认按“顺序排列”输出(a-z,0-9)

sort workerlist.txt
rem 带倒序参数/r(/R)的为倒叙排列,比较第一个字符的大小(字母不区分大小写)
rem 按“倒序排列”输出(z-a,9-0)

sort /r workerlist.txt
rem 参数/+n,表示从第几个字符开始排序,n为字符位置,可以与/r参数组合使用
rem 从第二次个字符开始倒序排列,并将结果输出到newlist.txt

sort /+2 /r workerlist.txt>newlist.txt

rem /o参数指定排序数据输出到指定文件中,与重定向结果一致,但会比重定向要快!

sort /+2 /r workerlist.txt /o newlist.txt

4、字符匹配命令find与findstr,文件中搜索指定的字符串,如果没有指定路径,FIND 将搜索在提示符处键入的文本或者由另一命令产生的文本(以下是演示文本内容)

rem find命令,不带参数情况
rem 查找测试文本文件中的包含110字符的字符串

find "110" 测试文本.txt
rem find /v 参数是显示所有未包含指定字符串的行,即为find不带参数的差集。

find /v "110" 测试文本.txt

rem find /c 输出匹配到的行数,可用作汇总

find /c "110" 测试文本.txt

rem find /n 输出匹配到的行号及内容

find /n "110" 测试文本.txt


rem find /i 搜索字符串时忽略大小写,即比如搜索r字符会将带r与R字符串一并匹配(这里不做演示)

find /n "r" 测试文本.txt


findstr有更多的参数和操作。更详细匹配时会用到

这里用到的案例1.txt

Hello World
Hello Boy
hello ,good man. 
goodbye! 

rem findstr /b参数,为begin缩写,匹配的是指定字符开头的字符串

findstr /b "hello" 1.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
hello ,good man.
rem findstr /e参数,为end缩写,匹配的是指定字符结尾的字符串

findstr /e "y" 1.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
Hello Boy
rem 通俗理解 findstr /l为文字匹配模式,/r为正则表达式匹配模式,正常情况下默认是开启/r模式
rem findstr /l参数,为language缩写,使用文字模式搜索字符串,与/r模式相反
rem /l模式下“”内部字符全都识别为字符串,无法使用正则表达式符号匹配!

findstr /l "hello" 1.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
hello ,good man.


rem findstr /r参数,为regular缩写,开启正则表达式模式,可识别正则表达式符号!默认模式可以不写/r

findstr /r "^Hello" 1.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)以Hello开头的字符
Hello World
Hello Boy
rem findstr /s参数,在当前目录和所有子目录中搜索匹配文件及信息
rem 不加/s则只会匹配当前目录中的txt文件!!!

findstr /s "hello" *.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
3.txt:hello ,good man.
ttt\1.txt:hello ,good man.
ttt\2.txt:hello ,good man.


rem 不使用/s只能搜索到当前目录中的txt文件,而不能匹配到当前目录下的ttt子目录下的文件

findstr "hello" *.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
3.txt:hello ,good man.


rem findstr /m参数,如果文件含有匹配项,只打印其文件名
rem 由于/s会名字和内容都匹配出来,所以常与/s组合成/sm使用

findstr /sm "hello" *.txt
—————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
3.txt
ttt\1.txt
ttt\2.txt
rem findstr /i参数,匹配内容不区分大小写

findstr /i "^hello" 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
Hello World
Hello Boy
hello ,good man.


rem findstr /x参数,完全匹配字符串,字符位置符号都必修一致。

findstr /x "goodbye!" 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
goodbye!


rem findstr /v参数,打印不匹配的行,为匹配字符的差集

findstr /v "^hello" 3.txt
—————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
Hello World
Hello Boy
goodbye!


rem findstr /n参数,在匹配的每行前打印行数

findstr /n "^hello" 3.txt
—————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
3:hello ,good man.
rem findstr /o参数,在匹配的每行前打印到首行第一个字符字符偏移量。
rem 这里需要注意的是每行结尾的换行算2个字符

findstr /o "Hello" 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
0:Hello World
13:Hello Boy


rem findstr /x参数,完全匹配字符串,字符位置符号都必须一致。

findstr /x "goodbye!" 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
goodbye!
rem findstr /c:参数,使得匹配的字符转变为文字匹配模式,与/l类似
rem 此时Hello后的空格只作为字符,不做分隔符

findstr /c:"Hello " 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
Hello World
Hello Boy


rem 此时Hello后的空格只做分隔符,不做字符,所以这时是匹配World和good开头的字符

findstr "World good" 3.txt
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
Hello World
hello ,good man.
goodbye!
rem findstr /f:从指定文件读文件列表中匹配包含的字符的文件,输出其文件名
rem filepath.txt存放的是以下2个文件的路径
rem D:\ttt\1.txt
rem D:\ttt\2.txt


findstr /f:filepath.txt /im "hello"
————————————————————————————————————————————
结果为(←这句不是输出结果!下面才是↓)
D:\ttt\1.txt
D:\ttt\2.txt

一般表达式的快速参考: 

.        通配符: 任何字符
  *        重复: 以前字符或类出现零或零以上次数
  ^        行位置: 行的开始
  $        行位置: 行的终点
  [class]  字符类: 任何在字符集中的字符
  [^class] 补字符类: 任何不在字符集中的字符
  [x-y]    范围: 在指定范围内的任何字符
  \x       Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的开始
  xyz\>    字位置: 字的结束

以下是表达式速讲(记住:特殊字符不会被识别成普通字符,除非用来转义符号参考文档——CMD 中 findstr 正则表达式

(1) 通配符 . 代表任何一个字符,包含包括字母、数字、半角符号还有空格,通常在打印所有文本信息中使用。

rem 查找2.txt文件中的任意字符,不包括空行
findstr "." 2.txt
或
findstr . 2.txt

(2)重复符 * 代表前面字母的出现次数(出现次数从0到多次,0表示没有) 

rem 查找2.txt文件中的任意字符,包括空行。
findstr ".*" 2.txt
或
findstr .* 2.txt

rem 查找2.txt文件中包含a字符,以及a字符后出现0次或者多次c字符的字符行
findstr "ac*" 2.txt
——————————————————以下都会识别——————————————————————
ab
abc
accd
addc
abbbccc

(3)行首符 ^ 和行尾符 $

rem  查询2.txt文件中以dos字符开头的字符行
findstr "^dos" 2.txt

rem 查询2.txt文件中以dos字符结尾的字符行
findstr "dos$" 2.txt

rem 查询2.txt文件中以dos为开头和结尾,即dos单独一行
findstr "^dos$" 2.txt
————————————————————————————————————————————————————————
rem 拓展:如果^dos$不加""会怎样?(自己试试吧) 
findstr ^dos$ 2.txt

::结果会输出以dos开头和结尾的所有的字符行,而不是单一dos一行

(4)字符集规则,即[class]

规则说明

1、匹配集合中任意一个字符即满足匹配。

2、集合中允许包含字母和数字和一般的半角字符,如:}{ ,.][等。

3、""引号为特殊字符不可被识别

4、汉字由于不是ASCII码不能被识别

5、如果在字符集内插入通配符和重复符号,即"[.*]"将会把. 和 *都会被视为普通字符

rem 查询2.txt文件中查询包含0-9的字符行
findstr "[0-9]" 2.txt

rem 查询2.txt文件中包含任意英文字符的字符行
findstr "[a-zA-Z]" 2.txt

rem 查询2.txt文件中包含a b c d s字符的字符行
findstr "[abcds]" 2.txt

rem 查询2.txt文件中包含a到c或者o到s字符的字符行
findstr "[a-co-s]" 2.txt

rem 查询2.txt文件中组合匹配项
rem Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y以上均可匹配到
findstr "M[abc][123]Y" 2.txt

(5)[^class] 是[class]的差集,查询任何不在字符集中的字符。

在使用差集时需要注意匹配的字符不能过滤带空格的字符行,可能会导致匹配不精准

rem 过滤不包含空格的纯数字字符行,注意此时不能过滤abc123这类组合字符和 218这种包含空格的字符行
findstr "[^0-9]" 2.txt

rem 过滤不包含空格的纯字母字符行(无论大小写),注意此时不能过滤abc123这类组合字符和 abc这种包含空格的字符行
rem 由于dos正则表达式不太规范会出现以下的问题:
rem [^a-z]或者[^A-Z]即可代表非纯字母行,而不是[^a-zA-Z],如需要排除大写字母的行就不行了。
——————————————————————————————————————————————————————————————————————————————————
findstr "[^a-z]" 2.txt
或
findstr "[^A-Z]" 2.txt

rem 过滤大写字母字符行正确写法
findstr "[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]" 2.txt

rem 过滤字母非abc三个字母组成的字符行。注意:带空格的字符行不行
findstr "[^abc]" 2.txt

(6)单词前缀后缀定位规则,即\<xyz和xyz\>,用于单个单词的匹配的

说明:由于补给中使用了前缀符号^,所以这里重新使用新符号代替,\<xyz和xyz\>,此时的\为转义符号,< >符号也不是重定向符号!!!xyz可以是英文单词或数字,但不适用于汉字。

rem 查询以start开头的字符行
findstr "\<start" 3.txt

rem 查询以end结尾的字符行
findstr "end\>" 3.txt  

rem 查询包含单个单词end的字符行,此时如果存在空格隔开的单词(如:abc end)也会匹配到
findstr "\<end\>" 3.txt

(7)元字符 x 的文字用法,由于字符匹配中可能需要特殊字符,但通常来说由于系统占用是不可乱用的,我们此时就需要使用转义字符将他变成纯字符。

常见转义字符
元字符对应的转义字符
\\\
?\?
<\<
>\>
.

\.

*\*
rem 匹配带.字符行
findstr "\." 3.txt

 

1.9 我的第一个批处理程序

输出Hello Windows

@echo off

echo Hello Windows!

pause>nul

1.10 盘符与路径的认识

C:表示驱动器C:
C:\表示驱动器C:的根目录

 


第二章  批处理之特殊符号(15种常见符号)

2.1 @ 命令行回显屏蔽符

介绍:批处理命令@是回显控制开关,带了则关闭回显,不带@则默认开启回显

"关闭回显"值的是运行批处理程序的时候,不显示程序中的每条命令。win系统默认打开

以下是不带@情况如图1所示

dir

rem 重定向到空设备↓
pause>nul

 

图1.不带@效果

以下是带@情况如图2所示

@dir

rem 重定向到空设备↓
pause>nul
图1.带@效果

 

2.2 % 批处理变量引导符 

%用于变量引导,%%在文本编辑模式下用于for命令中充当转义的作用,相当于命令行模式下的%!引用变量用%var%

最常用以下11个 %0   %1   %2   %3   %4   %5   %6   %7   %8   %9   %* ,%0 和 %* 特殊就单独讲解

引用变量用%var%,调用程序外部参数用%1 至%9 

@echo off

echo 我输入的3个变量为:%1、%2、%3

pause>nul

%0 代表批处理文件本身,包括完整的路径和扩展名

@echo off
rem 输出当前批处理文件自身,即该文件的完整路径信息
echo %0

pause>nul

由于%0可以代表自己,所以可以使用%0代表自己的路径,实现自我复制

@echo off
rem 自己a.bat复制成b.bat

copy %0 b.bat

pause>nul

%* 代表外部输入的所有参数

@echo off
rem  打印所有输入的参数
echo %*

pause>nul

2.3 >,>>,<,>&,<&重定向符

重定向符号可以让输入输出流从原本默认位置重定向到指定位置。输入或输出数据流的位置即为句柄。

默认情况下,可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmd.exe,然后由Cmd.exe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口。

句柄特定数字代码
句柄数字代码指代
STDIN0外部设备数据流输入
STDOUT1数据流输出到命令提示符窗口。
STDERR2错误输出到命令提示符窗口,2代码指代错误信息,可以使用>&或者&<重定向错误信息
UNDEFINED3-9这些句柄由应用程序和各个具体工具单独定义。

1、> 重定向输出符号,将数据流输出从默认命令行窗口重定向到指定位置。若多次输出到同一个文本文件中则会不断覆盖原有的内容

rem 将网卡连接详细信息输出到ipmessage.txt
ipconfig /all>ipmessage.txt

2、>> 重定向输出符号,将数据流输出从默认命令行窗口重定向到指定位置。若多次输出到同一个文本文件中则会不断在后面追加而不会覆盖内容

echo 你>>test.txt
echo 好>>test.txt
echo 小>>test.txt
echo 明>>test.txt

3、< 将外部输入作为数据流输入。

sort<test.txt

结果输出
——————————————————————————————————
1
2
3
a
b

4、重定向符号&可以将会一个句柄复制到另一个句柄处,格式为&句柄号,如&1。

>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。

譬如:将dir目录信息重定向到file.txt文件,并将错误信息也重定向到file.txt文件

rem 做法1:
rem 正确信息与错误分开导出(类似左花括号)
rem 正确信息输出到file.txt,错误信息输出到error.txt 但无论是否有输出都会生成这两个文件
dir>d:\file.txt 2>d:\error.txt 

rem 做法2:
rem 使用共同输出通道导出到同一个文件中(类似右花括号)
rem 使用2>&1,复制错误句柄到句柄1,即file.txt文件中
dir>d:\file.txt 2>&1

2.4 批处理之管道符号 |

管道符号即将前一个命令的输出作为下一个命令的输入处理,当第一个命令运行的时候后续的其他命令都会停止,知道他前一个命令出结果才继续运行,类似单线程。

rem 目录名按字母顺排
dir | sort

rem 查询当前目录下所有包含file字符的文件名
dir /b|find "file"

2.5 &组合运算符号

组合多个命令,格式: 命令1&命令2&命令3&... 前一个命令报错或者不执行不影响后一个命令的执行

eco 123&echo 456
运行结果
————————————————————————————————————————
'eco' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
456

2.6 &&组合运算符号,类似于与运算,下面以两个命令为例

由于或运算符合1*1=1,1*0=0,0*1=0规律,只执行到第一条错误命令后停止,后续命令无论对错都不执行。(口诀:有错就停)

rem 2条命令都正确的话,结果都执行
echo 123&&echo 456

rem 第1命令错误,第2命令正确,结果直接报第1个命令错误,第2命令不执行
ech 123&&echo 456

rem 第2命令错误,第1命令正确,结果都执行,但第1个输出结果,第2个报错
echo 123&&ech 456

rem 2条命令都错误的话,结果只报第1个错误,与第2点同理!
ech 123&&ech 456 

2.7 || 组合运算符号,类似于或运算

由于或运算符合1+0=1,0+1=1规律,可以记作只运行到第一条正确指令立即停止,后续指令不执行(口诀:碰到对就停)

rem 2条命令都正确的话,结果只运行第一条
echo 123||echo 456

rem 第1命令错误,第2命令正确,结果直接报第1个命令错误,第2命令执行,第3条命令无论对错都不执行
ech 123||echo 456||echo 789

rem 第2命令错误,第1命令正确,结果只执行第1个输出结果,第2个命令不执行
echo 123||ech 456

rem 2条命令都错误的话,结果只报第1、2个报错,直到第三个正确命令运行后停止
ech 123||ech 456||echo 789

2.8()分组符号

分组符号可以将多个命令分为一组,视为一条命令行运行。

rem 同时输出1,2,3

echo 1&echo2&echo 3
—— —— —— —— —— —— —— —— —— —— —— —— —— —— ——
rem 使用括号分行写,结果与上面的一样
(
echo 1
echo 2
echo 3
)

2.9 ;分隔符号

分号分隔符主要在命令相同时,可以将不同目标用,不需要重复写相同的命令。

rem 打印C、D盘文件信息,不需要重复写2次命令,只需用;分隔C、D盘符即可

dir /a /b c:\;d:\

2.10 ^   转义字符,是对<,>,&特殊符号的转义字符

正则表达式下代表的是开头,而非正则表达式模式下代表的是转义符号,详情可以查看findstr命令介绍。

rem 比如需要打印一些特殊字符如< > >>这类的重定向符号,我们就要用到转义字符
rem 直接输出会报错
echo >
——————————————————————————————————————————————
命令语法不正确。

echo ^>
——————————————————————————————————————————————
>

2.11 ""   字符串界定符

双引号可以解决常见的带空格问题!!!

rem 使用find或者findstr这类字符匹配命令需要指定特定字符,一般用双引号括起来
rem 如果匹配字符中有的空格存在则必须加上双引号,若没有空格则双引号可加可不加!
dir c:\ |findstr /i "A*"

2.12  ,  逗号 ; 分号!感叹号

(1)逗号相当于空格,在某些情况下","可以用来当做空格使 

rem 查询C盘目录信息
dir,c:\
写法等于
dir c:\

(2)分号,当命令相同时,可以将不同目标用;如执行过程中发生错误,程序会报错停止

rem 打印c盘和d盘所有文件信息
dir /a/b/s c:\;d:\

rem 错误示范:打印c、f、d盘所有文件信息
dir /a/b/s c:\;f:\;d:\
————————————————输出结果如下————————————————————
系统找不到指定的路径。

(3)在变量延迟问题中,用来表示变量,即%var%应该表示为!var!,请看前面的 setlocal 命令介绍

 


第三章节 批处理之变量(涉及set命令)

变量介绍

dos命令中变量经常出现,用于各种算术或者逻辑运算。set命令与变量经常使用,这里一起介绍。

rem 设置变量a的值为123,这里变量a不需要添加%%
set a=123

rem 这里引用变量a需要加上%%
echo %a%

set 命令用于显示、设置或删除 cmd.exe 环境变量。

注意事项:

(1)如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。

(2)SET 命令不允许变量名含有等号。

1、set /?查询当前set命令用法

2、不带参数的 set 显示当前环境变量

3、可仅用一个变量激活 SET 命令,等号或值不显示时则前缀匹配变量名

rem 命令则匹配所有前缀带p的环境变量和自定义变量,大小写不区分都匹配出来
rem 会显示所有以字母 P 打头的变量
set p 

4、set 变量名=值,变量赋值

set a=1

5、set a= 删除参数

set a=

6、/A 和 /P 命令行开关 

rem /A 命令开关支持表达式运算(/A与/a一致,不区分大小写)

set /a 1+1
@echo off
rem /P 命令行开关支持外部设备输入值作为参数,即外部传参!(/P与/p不区分大小写)

echo 请输入你的名字:
set /p a=
echo 你好,我叫%a%

pause>nul

 


 

第四章 批处理之运算操作

4.1 批处理之算数运算

(1)常见的加减乘除取余计算 + - * / %

set /a 1+1
set /a 2-1
set /a 10*10
set /a 10/2

(2)运算符运算优先级

 

运算优先级(由上到下)
运算符号说明
()分组符号
! ~ - 一元运算符
* / %算数运算符
+ -算数运算符
<< >>逻辑移位
&按位“与”
^按位“异”
|按位“或”
= *= /= %= += -=复合赋值运算符
&= ^= |= <<= >>=复合赋值运算符
表达式分隔符,如a=1,b=2中分隔表达式

4.2 批处理之命令窗口控制命令

(1)启动命令 start,这里列举常用几个参数

//格式如下:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

start 命令可以打开盘符、文件、文件夹、程序、网站

rem 打开盘符
start c:

rem 打开指定目录
start d:\aaa

rem 打开指定文件
start d:\aaa\file.txt

rem 打开批处理程序
start d:\aaa\myprogram.bat

rem 打开网站,这里系统会使用默认的浏览器打开
start www.baidu.com

"title"窗户标题定义参数,定义窗口标题栏中显示的标题

start "这是我的第一个程序" aaa.bat

max和min参数,定义启动模式,以最大/小化方式启动窗口

start 1.txt min

/b 参数,在当前窗口启动程序,不打开新窗口。要注意的是该模式下ctrl+c中止跳出程序会报错,正确做法是使用^break中止并跳出程序

start /b aaa.bat

常见错误:

1、路径出现空格的情况会报错

2、打开带空格目录名正确写法start "" "aa bb"

rem 正确写法的在出现空格的地方加上""
start d:\"aa bb".txt

或者把整个路径用括号括起来,多次出现空格时比较方便,中间需要加个空""才能正确识别路径
start "" "d:\aa bb.txt"

(2)程序调用命令 call,从批处理程序调用另一个批处理程序

call [drive:][path]filename [batch-parameters]

中文翻译:

call [盘符:][路径]文件名[批处理参数,传递调用的批处理程序]

案例说明:

call d:\abc\test.bat 123

其中:d:为盘符,\abc\test.bat为路径,test.bat 为文件名,123为批处理参数(如同目录下调用无需写详细盘符和路径,直接写文件名即可)

用法1:调用另一个批处理程序。

1、同目录下调用无需详细路径,直接写文件名即可

rem 相同目录下 

call test.bat

2、不同路径下则必须标注好详细路径

rem 不同目录下 

call d:\abc\test.bat

案例演示:

主程序代码

@echo off
echo 我是主程序!!!
echo 现在开始调用副程序
echo ************副程序输出***************
call d:\bb.bat 小明
echo ************************************
echo 副程序调用完成。

pause>nul

副程序代码,副程序放D盘根目录下,传递参数小明给副程序输出

@echo off
echo 你好,%1

用法2:调用当前批处理程序中的某个代码块(内部调用),类似goto的代码块调用,但写法有区别。

这里代码块 :label 叫做标签,是指定调用位置的标签,标签后的代码块可以看作一个内嵌的批处理程序

@echo off
echo 我是主程序!!!
echo 现在开始调用副程序
echo ************副程序输出***************
call :aa 小明
echo ************************************
echo 副程序调用完成。
pause

:aa
echo 你好 %1

:bb
echo 你好 小红

重点:call 的代码块调用会回调的,即执行完调用的代码后返回继续执行后续的代码,则goto调用不会

问1:什么会调用aa标签的代码还会输出bb标签中的代码结果?

答:因为call调用标签会转到aa标签所在的地方继续执行后面的代码直至程序结尾,无论是否是标签内部代码,运行结束后才会跳回调用处继续执行后续代码。(这里的call调用标签相当于流程的转变

————————————————————————————————————————————————————————————————————————

问2:以上案例的执行顺序是怎样的?

答:1-5~10~11~12~13~14~6~7~8

————————————————————————————————————————————————————————————————————————

问3:call内部标签的调用时pause应该放在哪里?

答:因该放在主程序结尾,且必须在所有标签前,不然由于call流程转变会执行到结尾的机制,若pause在标签后,程序执行就可能中止,需要人为继续下去。

3、批参数(%n)的替代已被增强。您可以使用以下语法:

   %~1     - 删除引号("),扩充 %1
   %~f1     - 将 %1 扩充到一个完全合格的路径名
   %~d1     - 仅将 %1 扩充到一个驱动器号
   %~p1     - 仅将 %1 扩充到一个路径
   %~n1     - 仅将 %1 扩充到一个文件名
   %~x1     - 仅将 %1 扩充到一个文件扩展名
   %~s1     - 扩充的路径指含有短名
   %~a1     - 将 %1 扩充到文件属性
   %~t1     - 将 %1 扩充到文件的日期/时间
   %~z1     - 将 %1 扩充到文件的大小
   %~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
   扩充到找到的第一个完全合格的名称。如果环境
   变量名未被定义,或者没有找到文件,此组合键会
   扩充到空字符串

可以组合修定符来取得多重结果:

   %~dp1    - 只将 %1 扩展到驱动器号和路径
   %~nx1    - 只将 %1 扩展到文件名和扩展名
   %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
   并扩展到找到的第一个文件的驱动器号和路径。
   %~ftza1    - 将 %1 扩展到类似 DIR 的输出行。
可以参照 call/? 或 for/? 看出每个参数的含意
echo load "%%1" "%%2">c:test.txt
生成的文件内容为 load "%1" "%2"
批处理文件里,用这个格式把命令行参数输出到文件

 

 

 

(3)流程转向控制命令 goto 用法与call类似,但本质区别在于程序是否回调,且只能是内部块的调用,无法待用另一个批处理程序

@echo off
echo 我是主程序!!!
echo 现在开始调用副程序
echo ************副程序输出***************
goto aa
echo ************************************
echo 副程序调用完成。

:aa
echo 你好 小明
pause

:bb
echo 你好 小红

区别1:调用子程序执行完成后不回调

区别2:不会像call调用后从标签执行到结尾,只会执行到调用块的结束

区别3:如果需要暂停程序查看结果,pause必须在子程序中结束,否则由于不回调机制,程序会完成子程序后自动关闭

区别4:goto命令不能传参

注意事项:[:标识符]中标识符正常来说不得含有逗号、冒号等特殊符号,但可以使用空格。

(4)程序关闭命令 exit,退出 CMD.EXE 程序(命令解释器)或当前批处理脚本

EXIT [/B] [exitCode]

  /B          指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个 批处理脚本外执行,则会退出 CMD.EXE(使用cmd.exe调用批处理时只想结束批处理而不关闭cmd窗口则需要加/b)

  exitCode    指定一个数字号码。如果指定了 /B,将 ERRORLEVEL设成那个数字。如果退出 CMD.EXE,则用那个数字设置 过程退出代码。(0代表正确返回,9009代表错误返回)

程序代码:

@echo off
echo exit命令讲解
pause
rem 这里设置errorlevel参数后会结束该程序,但负责调用他的cmd窗口不会关闭,exit后语句不会执行。
exit /b 123
echo abc
pause>nul

使用cmd窗口调用该程序


第五章  批处理之常用语句块

5.1 if...else 分支语句

常用的三个用法

1、错误数字代码判断

IF [NOT] ERRORLEVEL number command     <==>  IF [NOT] %ERRORLEVEL% equ number command

2、字符匹配
IF [NOT] "string1"=="string2" command

3、文件存在判断
IF [NOT] EXIST filename command

4、判断变量是否已经定义

IF [NOT] defined variable command 

5、数字匹配

IF [NOT] number1 equ number2 command

 

ELSE 子句必须出现在同一行上的 IF 之后。例如:

    IF EXIST filename. (
        del filename.
    ) ELSE (
        echo filename. missing.
    )

补充:由于> < >>等符号被占用,在数字匹配中的我们就需要用到英文缩写来代表特定符号,常见的符号及其缩写如下表

中文名称符号缩写英文全称
等于=equequal
大于>

gtr

greater than
大于或等于>=geqgreater than or equal
小于<lssless than
小于或等于<=leqless than or equal
不等于!=neqno equal

注意点:使用if...else...语句必须严格注意空格位置,否则程序可能会报错,譬如分组写法中else(XXX)必须写成else (XXX)必须有空格隔开if XXX(command)中必须写成if XXX (command)

rem 1、错误数字代码判断
rem 输入错误命令die
die
rem 判断错误数字代码,检查命令运行是否有错
if %errorlevel% equ 9009 (
	echo 命令执行正确
)
@echo off
rem 2、字符匹配
echo 请输入第一个字符
set /p a1=
echo 请输入第二个字符
set /p a2=
echo 以下输出字符匹配结果(不区分大小写),这里变量需要放在引号内,/i参数不区分大小写
if /i "%a1%"=="%a2%" (
	echo 字符匹配
) else (
	echo 字符不匹配
)

pause
@echo off
rem 3、判断ccc.bat文件是否存在
if exist ccc.bat (
    echo 文件存在
) else (
    echo 文件不存在
)

pause
@echo off
rem 4、判断变量是否定义
rem 打印a变量的信息
set a
if defined a (
    echo 变量已定义
)else ( 
    echo 变量未定义
)

pause
@echo off
rem 数字匹配
echo 请输入第一个数字:
set /p a1=
echo 请输入第二个数字:
set /p a2=
if %a1% equ %a2% (
    echo 数字匹配
)else (
    echo 数字不匹配
)

pause

5.2 for 循环遍历语句

对一组文件中的每一个文件执行某个特定命令

·1、无参数形式

FOR %变量名 IN (set) DO 命令 命令参数

set 指定一个或一组文件。可以使用通配符,在正常必须,%变量 在批处理程序中必须写成 %%变量 的形式,且变量区分大小写(%i与%I为两个变量)

rem 列出当前文件夹中所有文件名

for %a in (*.*) do @echo %a

rem 列出当前文件夹中所有jpg格式文件名

for %a in (*.jpg) do @echo %a

2、/d  参数只能显示当前目录下的目录名字

FOR /D %变量 IN (set)  DO 命令 命令参数

rem 输出当前路径下所有目录名
for /d %a in (*) do @echo %a

rem 输出当前目录下所有第二个字符为n的目录名(不分大小写)
for /d %a in (?n*.*) do @echo %a

3、/r 搜索指定路径及所有子目录中与set相符合的所有文件

FOR /R [[盘符:]路径] %变量 IN (set) DO 命令 命令参数

rem 罗列D盘所有目录及其子目录下所有文件信息
for /r D:\ %a in (*) do @echo %a

4、/l(该集表示以增量形式从开始到结束的一个数字序列,可以使用负的步长)

FOR /L %变量 IN (开始位置,步长,结束位置) DO 命令 命令参数

rem 使用for循环输出1-10的数字
for /l %a in (1,1,10) do @echo %a

rem 使用for语句循环创建10个文件夹,并以"我的第n个文件夹"的形式命名
for /l %a in (1,1,10) do md 我的第%a个文件夹

rem 输出100,80,60,40,20
for /l %a in (100,-20,1) do @echo %a

5 /f  可以遍历文件内字符,即文件文本解析

FOR /F %变量 IN (文件完整路径或文件名) DO 命令 命令参数

rem 遍历输出test.txt文件中的字符
for /f  %a in (test.txt) do @echo %a

/f 参数还有许多附加的参数,比较难,这里不做介绍,详情请查看以下文章。。。dos for循环讲解

 

5.3 代码块用法

代码块需要集合call 或者 goto 命令才能使用

区别:goto调用不能带参数(且只能内部调用),call调用允许带参数(允许内部和外部批处理程序调用)

@echo off

echo 现在开始调用代码块abc
goto abc

:abc
echo 我是abc代码块!
pause 

 

 


第六章  批处理之目录操作(dir)

6.1 目录查询命令dir

命令介绍:显示目录中的文件和子目录列表

命令格式:

DIR [盘符:][路径][文件名] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

常用参数介绍
参数说明用法讲解/补充
/A显示具有指定属性的文件

已定义的属性有:

D  目录                   R  只读文件      

H  隐藏文件            A  准备存档的文件
S  系统文件             I  无内容索引文件
L  重新分析点         O  脱机文件
 -  表示“否”的前缀

 

dir /A:H-O 查询当前目录和子目录下的隐藏文件和非脱机文件

/B使用空格式(没有标题信息或摘要),即单纯列出目录名或者文件名dir /B

/C

在文件大小中显示千位数分隔符。这是默认值。用 /-C 来禁用分隔符显示。

dir /C 文件大小使用千位数分隔符分隔    如 1,836

dir /-C 文件大小不使用千位数分隔符分隔  如1836

/D跟宽式相同,但文件是按栏分类列出的(类似表的形式列出)如下形式列出文件信息
/W用宽列表格式与/D相同
/L用小写(所有英文字母小写)dir /L
/N新的长列表格式,其中文件名在最右边

默认情况下就是长列表格式

/O        用分类顺序列出文件

附加属性有以下几个,可以根据自定义的规则列出文件

 N  按名称(字母顺序,系统默认排序)   S  按大小(从小到大)
 E  按扩展名(字母顺序)                         D  按日期/时间(从先到后)
 G  组目录优先                  -  反转顺序的前缀(-S代表从大到小排序)

 

按文件大小从大到小排序

dir /o:-s

按文件创建时间从先到后排序

dir /o:d

/P

在每个信息屏幕后暂停针对文件信息较多情况下使用,就是文件信息当前的窗口无法全部显示,需要一页一页暂停查看的时候使用。(类似于翻页)
/Q显示文件所有者文件权限归属者,一般为创建用户
/S显示指定目录和所有子目录中的文件。

显示C盘下所有目录及其子目录文件信息,并以翻页下形式展示

dir c:\  /a/s/p

/R          显示文件的备用数据流 

/T

控制显示或用来分类的时间字符域

由于系统默认显示时间只显示最后一次修改时间,如果需要查看文件创建时间或者上次写入时间就需要使用/T参数进行设置(可设置属性如下↓)

C  创建时间     A  上次访问时间      W  上次写入的时间

dir /T:C 显示当前目录下的文件创建时间

/X显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,短名称插在长名称前面。如果没有短名称,在其位置则显示空白
/4以四位数字显示年份

windows系统中默认使用4位数年份的格式,/4参数默认情况下可不写

6.2 目录切换命令cd

全称 chdir (切换目录),缩写cd,写全称或者缩写都行,标准下发有以下几种

CHDIR [/D] [盘符:][路径]
CHDIR [..]                             ——返回上级目录(当前目录的父目录)
CD [/D] [盘符:][路径]
CD [..]                                   ——返回上级目录(当前目录的父目录)

想要更深入的了解cd命令需要了解以下几个问题:

1、首先要理解C:与C:\区别(\是路径的符号,盘符加了就是代表路径)

这两者看起来相似但实际上表达的意思却截然不同,C:代表盘符C,即C盘,而C:\代表C盘根路径

2、区分什么是指定驱动器目录当前驱动器目录!

譬如下面就是我的电脑打开cmd命令行窗口默认的驱动器目录,一般系统默认驱动器目录会是当前系统的用户目录,如:C:\Users\当前用户名

如cd d:\abc 这一类指定的目录就是指定的驱动器目录(下面以D盘为例)

当前驱动器目录是需要使用 /D 参数改变的,单纯指定驱动器目录只会打印出指定驱动器目录,不会改变当前驱动器目录,同时会将D盘默认目录D:\设置为D:\ABC,这种设置生命周期只在该命令窗口打开期间,关闭后会重置为默认的D:\ ,以下用一个例子说明下

3、\D 参数除了可以改变驱动器的默认目录之外,还可改变当前驱动器

4、由于windows文件名、目录名不区分大小写,但显示的时候保留大小写形式,假设指定驱动器目录为D:\AbC(磁盘名上的大小写<显示情况下>),我们设置的时候输出命令cd D:\abc,系统会自动识别并将默认驱动器命令设置为正确的D:\AbC。

原介绍描述如下:当前的目录字符串会被转换成使用磁盘名上的大小写。所以,如果磁盘上的大小写如此,CD C:\TEMP 会将当前目录设为C:\Temp

5、cd 命令不把空格当作分隔符
即路径出现空格的情况可以不像其他命令一样带""处理!!!

cd \winnt\profiles\username\programs\start menu 与 cd "\winnt\profiles\username\programs\start menu" 结果一致

6、返回当前目录的上一级目录(父级目录) cd ..

6.3 目录创建命令md

md 全称 mkdir 是 make directory(创建目录)的缩写

命令格式

MKDIR [盘符:]路径
MD [盘符:]路径

rem 在当前驱动盘的根目录创建\a\b\c的多层目录
rem 如当前驱动器目录为C:\Users\你好打工人\Desktop,则在C盘根目录下创建文件夹
md \a\b\c
——————————————————————————————————————————————————————————————————————————
rem 在当前目录下创建\a\b\c的多层目录
md .\a\b\c
——————————————————————————————————————————————————————————————————————————
rem 在当前目录的上一级目录创建\a\b\c的多层目录
md ..\a\b\c
——————————————————————————————————————————————————————————————————————————
rem 同时创建多个目录(空格分隔)
md 目录1 目录2 ... 目录n

6.4 目录删除命令rd

rd 全称 rmdir 是 remove directory(删除目录)的缩写

命令格式

RMDIR [/S] [/Q] [盘符:]路径
RD [/S] [/Q] [盘符:]路径

有以下2个参数

/S      除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。

/Q      安静模式,带 /S 删除目录树时不要求确认

注意:

有时候如果目录为空删除的时候会报目录为空,此时可以使用强制删除操作 /s/q 可完成。

rem 同时删除多个目录(空格隔开)
rd /s /q 目录1 目录2 ... 目录n

6.5 设置搜索路径 path

path命令是可执行文件显示或设置一个搜索路径

PATH [[drive:]path[;...][;%PATH%]

path的几个写法讲解:

1、单纯一个path命令且不带参数,输出当前系统的环境变量,或者设置的新路径

2、path变量清空,记住是英文分号

rem 这个写法是清除所有搜索路径设置并指示 cmd.exe 只在当前目录中搜索。变量清空
PATH ;       

3、设置单个或者多个搜索路径,使用分号分隔

格式如:path 路径;路径2;路径3;...    (多个路径使用分号分隔)

path C:\WINDOWS\system32;D:\abc

4、需要保留旧路径设置,使用增量添加变量值,这里使用%path%指代旧路径

rem 这里注意分号分隔时不需要加空格分开,直接紧贴前一个写就好

rem 写法1:添加在旧路径后
path %path%;D:\abc

rem 写法2:添加到旧路径前
path D:\abc;%path%

注意事项:

1、设置了搜索路径后计算机就可以识别或者打开那个路径下的命令、运行程序或者批处理文件

下面拿打开计算器程序讲解

知识补充:计算器程序名calc.exe ,默认保存在系统的C:\WINDOWS\system32下(这个目录保存了包括cmd.exe和众多系统内部命令、系统程序)

2、变量生命周期:设置的路径不会改变当前系统的环境变量,其生命周期仅限在当前命令窗口打开时间内,重启cmd即可还原,我们设置的变量相当于临时变量

 

6.6 图形显示驱动器或路径的文件夹结构 tree

以图形显示驱动器或路径的文件夹结构(不是文件!如果要文件则需要加 /F 参数)

TREE [drive:][path] [/F] [/A]

   /F   显示每个文件夹中文件的名称。
   /A   使用 ASCII 字符,而不使用扩展字符。

 1、单纯命令 tree :列出当前目录的文件夹结构

2、无参数  列出指定路径的文件夹结构

3、/F 参数  显示每个文件夹中文件的名称

4、/A 参数 拓展符号|— 换成 ASCII 字符表示

 


第七章  批处理之文件操作

7.1 文件复制操作 copy 

将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source      指定要复制的文件。

destination  为新文件指定目录和/或文件名。
  /A           表示一个 ASCII 文本文件。
  /B           表示一个二进位文件。
  /D           允许解密要创建的目标文件
  /V           验证新文件写入是否正确。(文件复制错误会返回错误信息
  /N           复制带有非 8dot3 名称的文件时,尽可能使用短文件名。
  /Y           不使用确认是否要覆盖现有目标文件的提示。
  /-Y          使用确认是否要覆盖现有目标文件的提示。
  /Z           用可重新启动模式复制已联网的文件。(断网重连后会继续复制
  /L           如果源是符号链接,请将链接复制到目标而不是源链接指向的实际文件。(复制链接而不改变链接指向

关于/A 和 /B 参数说明

对于一个/ASCII文本文件,当/A开关位于命令行上的文件名列表之前,它将应用于所有名称跟在/A开关后面的文件,一直到COPY命令遇到一个/B开关,此时,/B开关将应用于名称位于它之前的文件。当/A开关跟在一个文件名后面时,它将应用于名称位于/A开关之前的文件以及名称位于/A开关后面的所有文件,直到COPY命令遇到一个/B开关,此时,/B开关将应用于名称位于它之前的文件。ASCII文本文件可以用一个文末符(CTRL+Z)来表示文件结束。在默认情况下,当合并文件时,COPY命令文件把所有处理视为ASCII文本文件。

对于一个二进制文件,当/B开关位于命令行上的文件名列表之前,它将应用于所有名称跟在/B开关后面的文件,一直到COPY文件命令遇到一个/A开关,此时,/A开关将应用于名称位于它之前的文件。当/B开关跟在一个文件名后面时,它将应用于名称位于/B开关之前的文件以及名称位于/B开关后面的所有文件,直到COPY命令遇到一个/A开关,此时,/A开关将应用于名称位于它之前的文件。/B开关指定命令编译器读取由目录中的文件大小指定字节数。/B开关是COPY命令的默认值,除非COPY命令用来合并文件。

1、复制单个文件

rem 复制当前文件夹内a.txt文件到当前目录并更名为b.txt

rem 1、可以只写文件名
copy a.txt b.txt

rem 2、也可以加上路径
copy .\a.txt .\b.txt

2、复制一个目录的文件到当前文件夹

rem 将当前目录下所有文件复制到D盘abc目录下
copy . D:\abc

3、批量复制文件

注意:这种复制不能复制abc目录中子目录中文件!!!

rem 不使用通配符批量复制文件(将D盘abc中文件复制到E盘bbb目录中)
copy D:\abc E:\bbb

通配符:多文件复制

rem 使用通配符批量复制文件(将D盘中所有.txt后缀文件复制到E盘bbb目录中)
copy D:\abc\*.txt E:\bbb

4、文件合并  将多个同类型文件合并成一个新文件

格式 : copy /b 文件1+文件2+...+文件n  目标文件名

注意:这里需要添加/b参数指示为二进制文件,不然会就复制会以ASCII模式运行,出现如2个mp3文件合并成一个时文件无法运行的问题

copy /b 数字.txt + 字母.txt 数字字母.txt

注意:合并目标文件未指定的情况下,合并的文件名取第一个文件名,同时会导致第一个文件被合并内容覆盖的情况

copy /b 数字.txt + 字母.txt

6、关闭文件覆盖确认提示 (系统默认自动开启 /-Y 模式)

 

copy命令注意事项

1、copy 命令必须指定源文件

2、同名拷贝允许忽略目标文件名,异名拷贝不允许忽略目标文件名

3、COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化。复制过程中,目标盘上相同文件名称的旧文件会被源文件取代。复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够。

4、源文件与目标文件之间必须用空格分隔。如:copy 源文件 目标文件

5、可以使用 copy con 目标文件 命令从键盘输入数据并保存到目标文件中(输入完毕按ctrl + z结果会自动保存到目标文件中)

将目标文件内容复制到控制台界面上 copy 目标文件 con

6、copy命令如果复制包含子目录的目录文件,会出现不复制子目录文件的情况!!!这里就需要用到xcopy命令

con 的详细解释:

con 是dos 设备文件的简称。 在dos中把很多外部设备作为文件,称为设备文件。dos中这样规定的:con 控制台(键盘/显示器) aux (或com1)第一个串口 lpt1 第一个并行打印机接口,nul 不存在的设备。

 

7.2 xcopy 复制文件和目录树

xcopy 是copy命令的拓展,解决了copy 无法复制目录和子目录文件无法复制的问题

命令格式:

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] [/B] [/J]
                           [/EXCLUDE:file1[+file2][+file3]...]

source           指定要复制的文件。
destination    指定新文件的位置和/或名称。
  /A                仅复制有存档属性集的文件,但不更改属性。
  /M               仅复制有存档属性集的文件, 并关闭存档属性。
  /D:m-d-y     复制在指定日期或指定日期以后更改的文件(>=指定日期)如果没有提供日期,只复制那些源时间比目标时间新的文件
  /EXCLUDE:file1[+file2][+file3]...       指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。如果任何字符串与复制文件的绝对路径的任何部分相符,则排除复制该文件。例如,指定如 \obj\ 或 .obj 的字符串会分别排除目录 obj 下面的所有文件或带有.obj 扩展名的所有文件。
  /P           创建每个目标文件之前提示你。
  /S           复制目录和子目录,不包括空目录
  /E           复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。
  /V           验证每个新文件的大小。
  /W           提示你在复制前按键。
  /C           即使有错误,也继续复制。
  /I           如果目标不存在,且要复制多个文件,则假定目标必须是目录。
  /Q           复制时不显示文件名。
  /F           复制时显示完整的源文件名和目标文件名。
  /L           显示要复制的文件。
  /G           允许将加密文件复制到不支持加密的目标。
  /H           也复制隐藏文件和系统文件。
  /R           覆盖只读文件。
  /T           创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。
  /U           只复制已经存在于目标中的文件。
  /K           复制属性。一般的 Xcopy 会重置只读属性。
  /N           用生成的短名称复制。
  /O           复制文件所有权和 ACL 信息。
  /X           复制文件审核设置(隐含 /O)。
  /Y           取消提示以确认要覆盖现有目标文件。
  /-Y          要提示以确认要覆盖现有目标文件。
  /Z           在可重新启动模式下复制网络文件。
  /B           复制符号链接本身与链接目标。
  /J           复制时不使用缓冲的 I/O。推荐复制大文件时使用。

1、复制D盘所有文件和子目录(包含空目录)到E盘下 /s /e  (单纯盘符的复制会让目标文件系统属性改变。变成隐藏)

xcopy D:\ E:\ /s /e
或
xcopy D: E: /s /e
rem 隐藏文件重新显示
attrib 目标文件 -s -h

2、复制D盘所有文件和子目录(包含空目录、系统文件和隐藏文件)到E盘下 /s /e /h

xcopy D:\ E:\ /s /e /h
或
xcopt D: E: /s /e /h

3、复制D盘下所有修改日期在2021-01-15之后(包含1月15号)的所有文件到E盘abc目录中

xcopy /d:01-15-2021 E:\abc .\a  /s /e /y

4、只更新存在于目标中的文件,就是更新目标中存在的文件(内容,修改时间等文件信息)

rem 使用E盘中的文件对a目录下的相同文件进行数据更新(a目录中没有但abc目录中有的文件不复制不更新)
xcopy E:\abc .\a  /s /e /y /u

5、单纯显示当前目录需要复制的文件列表,并不执行复制操作! /L参数

xcopy E:\abc .\a  /L

6、/I 参数 如果目标目录不存在则会直接自动创建,无需操作者选择目录选项再创建目录!!!

7.3 ren 重命名文件

ren 全名 rename(重命名)

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

说明:

REN [盘符:][路径]待重命名文件的文件名 新文件名

请注意,你不能为目标文件指定新的驱动器或路径。

1、批量修改文件名

rem 将D盘abc目录下所有.txt后缀文件改成.abc后缀
ren D:\abc\*.txt *.abc

2、通配符通配方式精讲:

这里ren使用的通配符记住一个规律:

*后面跟的第一个字符就是需要匹配的字符,如果字符在原名中存在则匹配到最后一次出现的位置,如果字符不在原名中,则保留原名后加上*后面的内容组成新名!

以下用原名以 abcdcakafs.txt 进行讲解

1、如 *a.txt 代表从原文件名开头匹配到最后一个字符a为止(重复只取最后一个的位置),即匹配部分为:abcdcaka,新名字就是 abcdcaka.txt

2、如新名 *zmm.txt 中出现了z字符但原名没出现,则保留原名且和 * 后的字符组成新名字为 abcdcakafs.txt + zmm.txt 即 abcdcakafs.txtzmm.txt

7.4 del / erase 文件删除

文件删除命令有两个,一个是del(删除)一个是 erase(擦除),两个关键词运行结果都一样的,作用是删除一个或多个文件

DEL [/P] [/F] [/S] [/Q] [/A[[:]文件属性]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         指定一个或多个文件或者目录列表。通配符可用来删除多个文件。如果指定了一个目录,该目录中的所有文件都会被删除。

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            删除所有子目录中的指定的文件。
  /Q            安静模式。删除全局通配符时,不要求确认
  /A            根据属性选择要删除的文件
  属性          R  只读文件            S  系统文件
                   H  隐藏文件            A  准备存档的文件
                   I  无内容索引文件   L  重新分析点
                   O  脱机文件            -  表示“否”的前缀

注意事项:del删除文件后会直接删除掉,不会进入回收站

常用参数讲解
参数说明用法讲解/补充

/P

删除每一个文件之前提示确认

/F强制删除只读文件,其他文件类型无法删除,如隐藏文件不能删除 
/A

删除指定属性文件,有以下属性

R  只读文件               S  系统文件
H  隐藏文件               A  准备存档的文件
I  无内容索引文件      L  重新分析点
O  脱机文件               -  表示“否”的前缀

1、删除只读文件(默认存放在abc目录)

del /a:r abc/*.*

2、删除包含只读和隐藏属性的文件

del /a:rh abc/*.*

/Q安静模式直接删除,不再提示删除确认 
/S删除所有子目录中的指定的文件

7.5 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                     对确认覆盖一个现有目标文件发出提示。(系统默认设置)

move常见案例
案例简述案例说明案例演示

移动并重命名目录

移动目录到特定位置并重命名目录

move aaa bbb\我的文档

移动并重命名文件

移动文件到特定位置并重命名文件

move aaa\a.txt bbb\b.txt

移动并重命名目录名以及文件名(组合)

移动目录到特定位置同时修改目录名和文件名。

口诀:111222121212

因为move 命令操作主体对象始终是跟第一个对象保持一致,否则会出现以下情况,即

1、move 目录 新目录(操作主体:目录)详情看案例1

2、move 文件 新文件(操作主体:文件)详情看案例2

3、move 文件 新目录 (操作主体:文件)

move aaa\a.txt bbb\abc  这里由于移动的是文件,操作主体是文件,系统会将新目录名当成新的文件名,就会出现下面的结果:

移动了源文件到这个位置后重命名为abc

4、move 目录 新文件 (操作主体:目录)

move aaa bbb\b.txt 这里移动的是目录,操作主体是目录,系统会将新的文件名当成新目录名,就会出现下面的结果:

创建了一个a.txt的目录,其中包含a.txt文件

 

7.6 判断文件或目录是否存在 exist关键字

exist 是用于判断判断文件或者目录是否存在的关键字,常见于if...else...语句中

rem 判断文件是否存在
if exist C:\Users\你好打工人\Desktop\a\a.txt (
	echo 文件存在!
)else (
	echo 文件不存在!
)
rem 判断目录是否存在
if exist C:\Users\你好打工人\Desktop\a (
	echo 目录存在!
)else (
	echo 目录不存在!
)

 

7.7 文件操作相关的其他命令

1、显示或更改文件属性命令 attrib 

ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [+O | -O] [+I | -I] [+X | -X] [+P | -P] [+U | -U] [盘符:][路径][文件名] [/S [/D]] [/L]

  +   设置属性。              -    清除属性。
  R   只读文件属性。      A   存档文件属性。
  S   系统文件属性。      H   隐藏文件属性。
  O   脱机属性。             I   无内容索引文件属性。
  X   无清理文件属性。  V   完整性属性。
  P   固定属性。             U   非固定属性。[drive:][path][filename]指定属性要处理的文件。

参数:

  /S  处理当前文件夹及其所有子文件夹中的匹配文件。
  /D  也处理文件夹。
  /L  处理符号链接和符号链接目标的属性

(1)查看文件属性

attrib [盘符:][路径][文件名]

rem 检查指定目录及子目录下所有文件属性
attrib a\*.* /s

(2)设置和消除属性

rem 设置c:\Page.sysc:的隐藏和系统属性。(+不可忽略,省略新版会报参数格式错误)
attrib +s +h c:\Page.sys

rem 清除c:\Page.sysc:的隐藏和系统属性。
attrib -s -h c:\Page.sys

(3)批量设置文件属性(a\*.* 这里操作主体是文件)/s

rem 给a目录及其子目录下所有文件添加隐藏和系统属性
attrib +h +s a\*.* /s

(4)批量设置目录属性(d:\abc 这里操作主体是目录) /d 

rem 将目录和子目录设置为隐藏属性
rem 将d:\abc目录属性设置为隐藏
attrib +h d:\abc /d

(5) /d /s 通配符 *组合  指定目录及其子目录属性设置(d:\abc\b* 这里操作主体是目录)

rem 匹配D:\abc目录下所有以b开头的目录及其内部以b开头的子目录,设置目录属性为隐藏
attrib +h d:\abc\b* /s /d

 

2、显示或修改文件扩展名关联 assoc

这个命令不太常用,但可以自定义扩展名和修改扩展名关联。在某些自定义的后缀文件的场景下使用并定义(如WPS软件后缀是自定义的.wps)

ASSOC [.ext[=[fileType]]]

ASSOC [.扩展名[=[文件类型]]]

  .ext      指定跟文件类型关联的文件扩展名
  fileType  指定跟文件扩展名关联的文件类型

(1)查询系统内部所有定义好的扩展名信息

assoc

(2)查询某个扩展名的关联关系

assoc .ext

(3)设置自定义扩展名和关联关系(必须在管理员模式下才能设置

rem .ext表示扩展名,filetype表示扩展名定义的关联关系
assoc .ext=filetype

(4)删除某个特定的扩展名及其关联关系(注意不要随便使用这个,不然容易导致系统报错

assoc .ext=

 


第八章  批处理之系统操作

8.1 关机命令 shutdown

关机命令shutdown常用于计算机维护中,除了可以对本机进行注销、关机、重启等设置外,也可以连接到外部计算机,对外部计算机进行关机等一系列操作。

用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f]
    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

    没有参数   显示帮助。这与键入 /? 是一样的。
    /?         显示帮助。这与不键入任何选项是一样的。
    /i         显示图形用户界面(GUI)。这必须是第一个选项。
    /l         注销。这不能与 /m 或 /d 选项一起使用
    /s         关闭计算机。
    /sg       关闭计算机。在下一次启动时,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
    /r         完全关闭并重启计算机。
    /g         完全关闭并重启计算机。重新启动系统后,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
    /a         中止系统关闭。这只能在超时期间使用。与 /fw 结合使用,以清除任何未完成的至固件的引导。
    /p         关闭本地计算机,没有超时或警告。可以与 /d 和 /f 选项一起使用。
    /h         休眠本地计算机。可以与 /f 选项一起使用。
    /hybrid    执行计算机关闭并进行准备以快速启动。必须与 /s 选项一起使用。
    /fw        与关闭选项结合使用,使下次启动转到固件用户界面。
    /e         记录计算机意外关闭的原因。
    /o         转到高级启动选项菜单并重新启动计算机。必须与 /r 选项一起使用。
    /m  \\computer     指定目标计算机。(一般是ip连接)
    /t xxx     将关闭前的超时时间设置为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为 30。如果超时时间大于 0,则默示为 /f 参数。
    /c "comment" 有关重新启动或关闭的原因的注释。最多允许 512 个字符。
    /f         强制关闭正在运行的应用程序而不事先警告用户。如果为 /t 参数指定大于 0 的值,则默示为 /f 参数。
    /d [p|u:]xx:yy  提供重新启动或关闭的原因。
               p 指示重启或关闭是计划内的。
               u 指示原因是用户定义的。
               如果未指定 p 也未指定 u,则重新启动或关闭
               是计划外的。
               xx 是主要原因编号(小于 256 的正整数)。
               yy 是次要原因编号(小于 65536 的正整数)

由于参数众多以下就只讲解几个常用的(/s /r /a /f /m /l /i /h)

shutdown命令常见案例
命令讲解命令
关机shutdown /s
取消关机(这只能在超时期间使用)shutdown /a
重启shutdown /r
注销shutdown /l
休眠

shutdown /h

打开关机图形界面GUIshutdown /i
强行关闭应用程序shutdown /f
远程控制计算机shutdown /m \远程计算机ip地址
设置关机时间,表示在1min之后强制关机shutdown /s /t 60
取消关闭计算机shutdown /m \计算机名 /a
设定关闭远程计算机的时间(n秒后关闭)shutdown /s /m \计算机ip地址 /t 时间

 

8.2 网络相关命令

8.2.1 网络状态命令 ping

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name

选项:
    -t                  Ping 指定的主机,直到停止。若要查看统计信息并继续操作,请键入 Ctrl+Break;若要停止,请键入 Ctrl+C
    -a                 将地址解析为主机名。
    -n count       要发送的回显请求数。
    -l size           发送缓冲区大小。
    -f                  在数据包中设置“不分段”标记(仅适用于 IPv4)。
    -i TTL           生存时间。
    -v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,对 IP 标头中的服务类型字段没有任何影响)。
    -r count        记录计数跃点的路由(仅适用于 IPv4)。
    -s count        计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list     与主机列表一起使用的松散源路由(仅适用于 IPv4)。
    -k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。
    -w timeout    等待每次回复的超时时间(毫秒)。
    -R                  同样使用路由标头测试反向路由(仅适用于 IPv6)。根据 RFC 5095,已弃用此路由标头。如果使用此标头,某些系统可能丢弃回显请求。
    -S srcaddr      要使用的源地址。
    -c compartment   路由隔离舱标识符。
    -p                  Ping Hyper-V 网络虚拟化提供程序地址。
    -4                  强制使用 IPv4。
    -6                  强制使用 IPv6。

ping命令常用案例
案例简述命令案例演示
ping 网址(测试该网站是否网络畅通)

命令 ping 网址/ip

ping www.baidu.com

不断ping指定的ip知道Ctrl + C 人为停止

命令 ping -t ip

ping -t 127.0.0.1

将地址解析成主机名(顺便查看主机名)

命令 ping -a ip

ping -a 127.0.0.1

设置ping请求次数

命令 ping -n count(请求次数) ip

ping -n 6 127.0.0.1

设置发送缓冲区的大小

 

注意:持续发送过大的缓冲器可能会让服务器缓冲区溢出导致ping超时的情况出现,缓冲区溢出对服务器很危险!

命令 ping -l size(大小要求0<=size<=65500) ip

ping -l 100 127.0.0.1

设置该请求的DNS记录在DNS服务器上缓存时间(这时TTL一般会变成服务器上设置的TTL,所以该设置受限于服务器或系统设置的!)

 

TTL时间:表示DNS记录在DNS服务器上缓存时间,单位s,可以根据DNS服务器缓冲区大小进行合理设置

 

TTL还有个用提就是判断操作系统(一般用系统默认TTL)

1、WINDOWS NT/2000   TTL:128

2、WINDOWS 95/98     TTL:32

3、UNIX              TTL:255

4、LINUX             TTL:64

5、WIN7          TTL:64

命令 ping -i TTL (单位s) ip

ping -i 128 127.0.0.1

记录ip请求跳转的路由(不常用)

 

(此功能需要路由器支持源路由功能,现在服务器为了防止如 源地址欺骗 等网络攻击都会停用,现在请使用tracert命令进行路由跟踪)

可以使用tracert命令来检查通过的路由,不需要任何支持,使用的是ICMP协议,通过改变TTL来实现,每经过一个路由,TTL会减1,当数据包的TTL值变为0时,数据被丢弃,并发送一个ICMP消息回源地址,这样通过改变TTL的值,就可以探出整个路径。最大长度为30

命令 ping -r count(记录路由数,有效范围从 1 到 9) ip

ping -r 9 www.baidu.com

设置ping请求等待超时时间

<等待每次回复的超时时间(毫秒)>

命令 ping -w timeout(超时时间,单位ms) ip

ping -w 30 www.baidu.com

等待响应时间超过30ms视为超时

 

这里要注意一点

补充: 解析出处

什么是TTL? 

TTL(Time To Live,生存时间)是IP协议包中的一个值,当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。举个例子,如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。

 

8.2.2 跟踪路由命令 tracert

tracert被称为Windows路由跟踪命令

用于确定 IP 数据包访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由

用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

选项:
    -d                             不将地址解析成主机名。
    -h maximum_hops   搜索目标的最大跃点数。
    -j host-list                 与主机列表一起的松散源路由(仅适用于 IPv4)。
    -w timeout                等待每个回复的超时时间(以毫秒为单位)。
    -R                             跟踪往返行程路径(仅适用于 IPv6)。
    -S srcaddr                要使用的源地址(仅适用于 IPv6)。
    -4                             强制使用 IPv4。
    -6                             强制使用 IPv6。

tracert命令常用案例
案例简述命令案例演示
路由跟踪(默认查路由的主机名和ip)

命令: tracert  网址/ip

tracert www.baidu.com

(*代表请求超时)

路由跟踪(-d 不差主机名,单纯查路由ip)

命令: tracert -d 网址/ip

tracert -d www.baidu.com

设置最大跟踪的路由数(-h)

命令: tracert -h count 网址/ip

设置最多跟踪30个路由

tracert -h 30 www.baidu.com 

设置每个请求的超时时间(-w)

命令: tracert -w timeout(单位ms) 网址/ip

设置路由跟踪超时时间为100ms

tracert -w 100 www.baidu.com 

8.2.3 TCP/IP配置情况命令 ipconfig

用法:
    ipconfig [/allcompartments] [/? | /all |
                                 /renew [adapter] | /release [adapter] |
                                 /renew6 [adapter] | /release6 [adapter] |
                                 /flushdns | /displaydns | /registerdns |
                                 /showclassid adapter |
                                 /setclassid adapter [classid] |
                                 /showclassid6 adapter |
                                 /setclassid6 adapter [classid] ]

其中
    adapter             连接名称
                       (允许使用通配符 * 和 ?,参见示例)

    选项:
       /?                         显示此帮助消息
       /all                       显示完整配置信息。
       /release               释放指定适配器的 IPv4 地址。
       /release6             释放指定适配器的 IPv6 地址。
       /renew                 更新指定适配器的 IPv4 地址。
       /renew6               更新指定适配器的 IPv6 地址。
       /flushdns             清除 DNS 解析程序缓存。
       /registerdns         刷新所有 DHCP 租用并重新注册 DNS 名称
       /displaydns          显示 DNS 解析程序缓存的内容。
       /showclassid       显示适配器允许的所有 DHCP 类 ID。
       /setclassid           修改 DHCP 类 ID。
       /showclassid6     显示适配器允许的所有 IPv6 DHCP 类 ID。
       /setclassid6         修改 IPv6 DHCP 类 ID。

对于 Release 和 Renew,如果未指定适配器名称,则会释放或更新所有绑定
到 TCP/IP 的适配器的 IP 地址租用。

对于 Setclassid 和 Setclassid6,如果未指定 ClassId,则会删除 ClassId

rem 显示基本配置信息
ipconfig

rem 显示详细配置信息
ipconfig /all

rem 释放本机中名为WLAN的网络适配器的ip地址
ipconfig /release WLAN

rem 释放本机所有ip地址(会断网)可以使用通配符 * ?
ipconfig /release *

rem 更新本机中名为WLAN的网络适配器的ip地址
ipconfig /renew WLAN

rem 更新本机所有ip地址(重新获取ip地址)可以使用通配符 * ?
ipconfig /renew *

rem 清除 DNS 解析程序缓存
ipconfig /flushdns

rem 显示 DNS 解析程序缓存的内容
ipconfig /displaydns

8.2.4 远程网络连接命令 telnet

该命令可以允许计算机开启远程网络连接,允许其他计算机对本机进行访问,通过该命令也可以检查端口开放情况,但出于计算机安全考虑(端口容易被黑客利用)是不会默认开启,开启后使用完毕记得及时关闭

需要开启telnet功能才能使用该命令!     控制面板>程序>启动或关闭windows功能>telnet打勾确定

telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
 

-a      企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
 -e      跳过字符来进入 telnet 客户端提示。
 -f      客户端登录的文件名
 -l      指定远程系统上登录用的用户名。
         要求远程系统支持 TELNET ENVIRON 选项。
 -t      指定终端类型。
         支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
 host    指定要连接的远程计算机的主机名或 IP 地址。
 port    指定端口号或服务名。

rem 测试百度服务器是否开启80HTTP端口
telnet www.baidu.com 80

rem 测试百度服务器是否开启223HTTP端口
telnet www.baidu.com 223

百度80端口开放,自动跳转到新窗口了

百度223端口不开放,直接报连接失败

 

8.2.5 地址解析协议命令 arp (了解,不常用)

显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            通过询问当前协议数据,显示当前 ARP 项。如果指定 inet_addr,则只显示指定计算机的 IP 地址和物理地址。如果不止一个网络接口使用 ARP,则显示每个 ARP 表的项。
  -g            与 -a 相同。
  -v            在详细模式下显示当前 ARP 项。所有无效项和环回接口上的项都将显示。
  inet_addr     指定 Internet 地址。
  -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
  -d            删除 inet_addr 指定的主机。inet_addr 可以是通配符 *,以删除所有主机。
  -s            添加主机并且将 Internet 地址 inet_addr与物理地址 eth_addr 相关联。物理地址是用连字符分隔的 6 个十六进制字节。该项是永久的。
  eth_addr      指定物理地址。
  if_addr       如果存在,此项指定地址转换表应修改的接口的 Internet 地址。如果不存在,则使用第一个适用的接口。
示例:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09.... 添加静态项。
  > arp -a                                  .... 显示 ARP 表。

查询系统所有地址解析信息
arp -a

 

 

8.2.6 显示协议统计信息和当前 TCP/IP 网络连接 netstat

显示协议统计信息和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

  -a            显示所有连接和侦听端口。
  -b            显示在创建每个连接或侦听端口时涉及的
                可执行程序。在某些情况下,已知可执行程序承载
                多个独立的组件,这些情况下,
                显示创建连接或侦听端口时
                涉及的组件序列。在此情况下,可执行程序的
                名称位于底部 [] 中,它调用的组件位于顶部,
                直至达到 TCP/IP。注意,此选项
                可能很耗时,并且在你没有足够
                权限时可能失败。
  -e            显示以太网统计信息。此选项可以与 -s 选项
                结合使用。
  -f            显示外部地址的完全限定
                域名(FQDN)。
  -n            以数字形式显示地址和端口号。
  -o            显示拥有的与每个连接关联的进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto(全名protocol 协议)
                可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
                选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
  -q            显示所有连接、侦听端口和绑定的
                非侦听 TCP 端口。绑定的非侦听端口
                 不一定与活动连接相关联。
  -r            显示路由表。
  -s            显示每个协议的统计信息。默认情况下,
                显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
                -p 选项可用于指定默认的子网。
  -t            显示当前连接卸载状态。
  -x            显示 NetworkDirect 连接、侦听器和共享
                终结点。
  -y            显示所有连接的 TCP 连接模板。
                无法与其他选项结合使用。
  interval      重新显示选定的统计信息,各个显示间暂停的
                间隔秒数。按 CTRL+C 停止重新显示
                统计信息。如果省略,则 netstat 将打印当前的
                配置信息一次。

netstat命令常用案例
案例简述命令案例演示
显示所有连接和侦听端口(文字模式)-anetstat -a
显示所有连接和侦听端口(数字模式)-an

netstat -a -n

netstat -an

显示所有连接和侦听端口以及相关的进程号 -ano/-ao

该选项在-a或-an模式下添加进程号的列

netstat -a -n -o

netstat -ano

显示在创建每个连接或侦听端口时涉及的可执行程序

(必须在管理员模式下运行,否则会提示权限不够!)

netstat -b

以下在任务管理器中查看是否存在该TCP连接

显示以太网统计信息,例如发送和接收的字节数和数据包数netstat -e

显示外部地址的完全限定域名(FQDN)

 

完全限定域名,是指主机名 加上 全路径,全路径中列出了序列中所有的域成员。FQDN包含两部分:主机名域名

netstat -f

显示 proto 指定的协议的连接(-p proto,也可与-s组合使用)

netstat -p proto(可选TCP、UDP、TCPv6 或 UDPv6)

与-s 可以组合同时显示某个协议的统计信息

 

netstat -s -p proto(此时可选IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6)

显示UDP协议连接情况

显示TDP连接情况同时查看TCP统计信息

显示所有连接、侦听端口和绑定的非侦听 TCP 端口(-q 主要是为了查看绑定的非侦听TCP端口

netstat -q

netstat -anoq

显示路由表 -r

netstat -r
显示当前连接卸载状态 -t

netstat -t

 

显示所有连接的 TCP 连接模板。无法与其他选项结合使用 -ynetstat -y
同时显示以太网统计信息和所有协议的统计信息netstat -e -s
要每 5 秒显示一次活动 TCP 连接和进程 IDnetstat -o 5

补充:TCP连接的几种状态

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(客户端)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)

ESTABLISHED:代表一个打开的连接 (表示连接已建立)

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

BOUND:绑定的连接状态

 

8.3 进程相关命令

8.3.1显示在本地或远程机器上当前运行的进程列表命令 tasklist

TASKLIST [/S system [/U username [/P [password]]]]
         [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]

描述:
    该工具显示在本地或远程机器上当前运行的进程列表。


参数列表:
   /S     system                  指定连接到的远程系统。

   /U     [domain\]user        指定应该在哪个用户上下文执行这个命令。

   /P     [password]            为提供的用户上下文指定密码。如果省略,则提示输入。

   /M     [模块名]               列出当前使用所给 exe/dll 名称的所有任务。如果没有指定模块名称,显示所有加载的模块。(如user32.dll就是模块名)

   /SVC                             显示每个进程中主持的服务。

   /APPS                          显示 Microsoft Store 应用及其关联的进程。

   /V                                 显示详细任务信息。

   /FI    filter                     显示一系列符合筛选器指定条件的任务。

   /FO    format               指定输出格式。有效值: "TABLE"、"LIST"、"CSV"。

   /NH                             指定列标题不应该在输出中显示。只对 "TABLE" 和 "CSV" 格式有效。

   /?                                显示此帮助消息。

筛选器:

筛选器名称有效运算符有效值
STATUSeq, neRUNNING | SUSPENDED | NOT RESPONDING | UNKNOWN
IMAGENAMEeq, ne映像名称

PID

eq, ne, gt, lt, ge, lePID 值
SESSIONeq, ne, gt, lt, ge, le会话编号
SESSIONNAMEeq, ne会话名称
CPUTIMEeq, ne, gt, lt, ge, le CPU 时间,格式为 hh:mm:ss
 hh - 小时,mm - 分钟,ss - 秒
MEMUSAGEeq, ne, gt, lt, ge, le内存使用(以 KB 为单位)
USERNAMEeq, ne用户名,格式为 [域\]用户
SERVICESeq, ne服务名称
WINDOWTITLEeq, ne窗口标题
MODULESeq, ne DLL 名称(模块名)

注意: 当查询远程计算机时,不支持 "WINDOWTITLE" 和 "STATUS"筛选器。

例如:
    TASKLIST
    TASKLIST /M
    TASKLIST /V /FO CSV
    TASKLIST /SVC /FO LIST
    TASKLIST /APPS /FI "STATUS eq RUNNING"
    TASKLIST /M wbem*
    TASKLIST /S system /FO LIST
    TASKLIST /S system /U 域\用户名 /FO CSV /NH
    TASKLIST /S system /U username /P password /FO TABLE /NH    查看远程计算机进程列表,结果以表格形式输出
    TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"

tasklist命令常用案例
案例简述命令案例演示
显示本地进程列表

命令 tasklist 

包含进程名、PID、会话名、会话、内存使用

显示详细进程列表 -V(注意是大写)

命令 tasklist -V

包含进程名、PID、会话名、会话、内存使用、CPU时间、窗口标题、状态、用户名(加粗为新增状态信息)

显示调用指定模块的所有任务

命令 tasklist /m model(模块名,如user32.dll)

显示所有任务调用的所有模块信息(分组列出):

tasklist /m

显示所有调用user32.dll模块的任务:

tasklist /m user32.dll

显示每个进程中主持的服务命令 tasklist /SVC
显示 Microsoft Store 应用及其关联的进程命令 tasklist /APPS
选择输出格式 /FO

命令 tasklist /FO format(格式可选: TABLE、LIST、CSV;系统默认TABLE格式输出) 

TABLE表单格式

LIST列表格式

CSV逗号分隔值格式

输出不显示列标题 /NH  

只对 "TABLE" 和 "CSV" 格式有效

命令 tasklist /NH (常与/FO组合使用)

task /FO table /NH

带标题

去除标题

显示指定筛选器结果 /FI 筛选器

命令 tasklist /FI filter(筛选器)

显示占用占用内存大于300Mb的进程

 

补充1:DDL是什么?

        DLL的全称是Dynamic Link Library, 中文叫做“动态链接文件”。在Windows操作系统中, DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。而有些DLL文件可以被许多程序共用。因此, 程序设计人员可以利用DLL文件, 使程序不至于太过巨大。但是当安装的程序越来越多, DLL文件也就会越来越多, 如果当你删除程序的时候, 没有用的DLL文件没有被删除的话, 久而久之就造成系统的负担了。DLL文件和EXE文件同样可以由编译语言生成,但是DLL没有程序启动入口,所以DLL文件不可执行

补充2:CSV格式是什么?

        逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。

 

8.3.2 进程(任务)终结命令 taskkill

TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:
    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:
    /S    system               指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]         为提供的用户上下文指定密码。如果忽略,提示输入。

    /FI   filter                   应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*(tasklist命令的不能用反)

    /PID  processid        指定要终止的进程的 PID。使用 TaskList 取得 PID。

    /IM   imagename      指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。

    /T                              终止指定的进程和由它启用的子进程。

    /F                              指定强制终止进程。

    /?                              显示帮助消息。

筛选器:

筛选器名称有效运算符有效值
STATUSeq, neRUNNING | SUSPENDED | NOT RESPONDING | UNKNOWN
IMAGENAMEeq, ne映像名称

PID

eq, ne, gt, lt, ge, lePID 值
SESSIONeq, ne, gt, lt, ge, le会话编号
CPUTIMEeq, ne, gt, lt, ge, le CPU 时间,格式为 hh:mm:ss
 hh - 小时,mm - 分钟,ss - 秒
MEMUSAGEeq, ne, gt, lt, ge, le内存使用(以 KB 为单位)
USERNAMEeq, ne用户名,格式为 [域\]用户
SERVICESeq, ne服务名称
WINDOWTITLEeq, ne窗口标题
MODULESeq, ne DLL 名称(模块名)

    说明
    ----
    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
    2) 远程进程总是要强行 (/F) 终止。
    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

taskkill命令常用案例
案例简述命令案例演示
直接通过PID中止进程(/PID)单个中止

命令 taskkill /PID processid(进程id)

直接通过PID中止进程(/PID)多个中止命令 taskkill /PID processid1 /PID processid2 /PID ...TASKKILL /PID 1230 /PID 1241 /PID 1253
中止远程计算机上的进程

命令 taskkill /S system /U username /P password /FI filter /F(强制关闭远程计算机中的特定进程)

TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

中止远程计算机上的映像名称以note开头的所有进程

通过映像名中止进程(/IM)

命令 taskkill /IM imagename(映像名)

中止

taskkill /IM notepad.exe

中止进程及其子进程(/T)taskkill /T

中止cmd程序及其子进程

TASKKILL /F /IM cmd.exe /T

 

强制中止进程(/F)taskkill /F

 

8.4 计划命令 schtasks (at已弃用所以只将schtasks命令)

SCHTASKS /parameter [arguments]

描述:
    允许管理员创建、删除、查询、更改、运行和中止本地远程系统上的计划任务。

参数列表:
    /Create         创建新计划任务。

    /Delete         删除计划任务。

    /Query          显示所有计划任务。

    /Change       更改计划任务属性。

    /Run            按需运行计划任务。

    /End            中止当前正在运行的计划任务。

    /ShowSid    显示与计划的任务名称相应的安全标识符。

    /?                显示此帮助消息。

例子:
    SCHTASKS 查询系统当前所有计划任务
    SCHTASKS /?
    SCHTASKS /Run /?
    SCHTASKS /End /?
    SCHTASKS /Create /?
    SCHTASKS /Delete /?
    SCHTASKS /Query  /?
    SCHTASKS /Change /?
    SCHTASKS /ShowSid /?

8.4.1 schtasks /Create 

SCHTASKS /Create [/S system [/U username [/P [password]]]]
    [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
    [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
    [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]]
    [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F] [/HRESULT] [/?]

描述:
     允许管理员在本地或远程系统上创建计划任务。

参数列表:
    /S   system            指定要连接到的远程系统。如果省略这个系统参数,默认是本地系统。

    /U   username       指定应在其中执行 SchTasks.exe 的用户上下文。

    /P   [password]     指定给定用户上下文的密码。如果省略则提示输入。

    /RU  username      指定任务在其下运行的“运行方式”用户
                       帐户(用户上下文)。对于系统帐户,有效
                       值是 ""、"NT AUTHORITY\SYSTEM" 或
                       "SYSTEM"。
                       对于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和
                       "NT AUTHORITY\NETWORKSERVICE"以及常见的 SID
                         对这三个也都可用。

    /RP  [password]    指定“运行方式”用户的密码。要提示输入密码,值必须是 "*" 或无。系统帐户会忽略该密码。必须和 /RU 或 /XML 开关一起使用。

/RU/XML    /SC   schedule     指定计划频率。
                       有效计划任务:  MINUTE、 HOURLY、DAILY、WEEKLY、
                       MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.

    /MO   modifier     改进计划类型以允许更好地控制计划重复
                       周期。有效值列于下面“修改者”部分中。

    /D    days         指定该周内运行任务的日期。有效值:
                       MON、TUE、WED、THU、FRI、SAT、SUN
                       和对 MONTHLY 计划的 1 - 31
                       (某月中的日期)。通配符“*”指定所有日期。

    /M    months       指定一年内的某月。默认是该月的第一天。
                       有效值: JAN、FEB、MAR、APR、MAY、JUN、
                       JUL、 AUG、SEP、OCT、NOV  和 DEC。通配符
                       “*” 指定所有的月。

    /I    idletime     指定运行一个已计划的 ONIDLE 任务之前
                       要等待的空闲时间。
                       有效值范围: 1 到 999 分钟。

    /TN   taskname     以路径\名称形式指定
                       对此计划任务进行唯一标识的字符串。

    /TR   taskrun      指定在这个计划时间运行的程序的路径
                       和文件名。
                       例如: C:\windows\system32\calc.exe

    /ST   starttime    指定运行任务的开始时间。
                       时间格式为 HH:mm (24 小时时间),例如 14:30 表示
                       2:30 PM。如果未指定 /ST,则默认值为
                       当前时间。/SC ONCE 必需有此选项。

    /RI   interval     用分钟指定重复间隔。这不适用于
                       计划类型: MINUTE、HOURLY、
                       ONSTART, ONLOGON, ONIDLE, ONEVENT.
                       有效范围: 1 - 599940 分钟。
                       如果已指定 /ET 或 /DU,则其默认值为
                       10 分钟。

    /ET   endtime      指定运行任务的结束时间。
                       时间格式为 HH:mm (24 小时时间),例如,14:50 表示 2:50 PM。
                       这不适用于计划类型: ONSTART、
                       ONLOGON, ONIDLE, ONEVENT.

    /DU   duration     指定运行任务的持续时间。
                       时间格式为 HH:mm。这不适用于 /ET 和
                       计划类型: ONSTART, ONLOGON, ONIDLE, ONEVENT.
                       对于 /V1 任务,如果已指定 /RI,则持续时间默认值为
                       1 小时。

    /K                 在结束时间或持续时间终止任务。
                       这不适用于计划类型: ONSTART、
                       ONLOGON, ONIDLE, ONEVENT.
                       必须指定 /ET 或 /DU。

    /SD   startdate    指定运行任务的第一个日期。
                       格式为 yyyy/mm/dd。默认值为
                       当前日期。这不适用于计划类型: ONCE、
                       ONSTART, ONLOGON, ONIDLE, ONEVENT.

    /ED   enddate      指定此任务运行的最后一天的日期。
                       格式是 yyyy/mm/dd。这不适用于计划类型:
                        ONCE、ONSTART、ONLOGON、ONIDLE。

    /EC   ChannelName  为 OnEvent 触发器指定事件通道。

    /IT                仅有在 /RU 用户当前已登录且
                       作业正在运行时才可以交互式运行任务。
                       此任务只有在用户已登录的情况下才运行。

    /NP                不储存任何密码。任务以给定用户的身份
                       非交互的方式运行。只有本地资源可用。

    /Z                 标记在最终运行完任务后删除任务。

    /XML  xmlfile      从文件的指定任务 XML 中创建任务。
                       可以组合使用 /RU 和 /RP 开关,或者在任务 XML 已包含
                       主体时单独使用 /RP。

    /V1                创建 Vista 以前的平台可以看见的任务。
                       不兼容 /XML。

    /F                 如果指定的任务已经存在,则强制创建
                       任务并抑制警告。

    /RL   level        为作业设置运行级别。有效值为
                       LIMITED 和 HIGHEST。默认值为 LIMITED。

    /DELAY delaytime   指定触发触发器后延迟任务运行的
                       等待时间。时间格式为
                       mmmm:ss。此选项仅对计划类型
                       ONSTART, ONLOGON, ONEVENT.

    /HRESULT          为获得更出色的故障诊断能力,处理退出代码
                       将采用 HRESULT 格式。

    /?                 显示此帮助消息。

修改者: 按计划类型的 /MO 开关的有效值:
    MINUTE:  1 到 1439 分钟。
    HOURLY:  1 - 23 小时。
    DAILY:   1 到 365 天。
    WEEKLY:  1 到 52 周。
    ONCE:    无修改者。
    ONSTART: 无修改者。
    ONLOGON: 无修改者。
    ONIDLE:  无修改者。
    MONTHLY: 1 到 12,或
             FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY。

    ONEVENT:  XPath 事件查询字符串。
示例:
    ==> 在远程机器 "ABC" 上创建计划任务 "doc",
        该机器每小时在 "runasuser" 用户下运行 notepad.exe。

        SCHTASKS /Create /S ABC /U user /P password /RU runasuser
                 /RP runaspassword /SC HOURLY /TN doc /TR notepad

    ==> 在远程机器 "ABC" 上创建计划任务 "accountant",
        在指定的开始日期和结束日期之间的开始时间和结束时间内,
        每隔五分钟运行 calc.exe。

        SCHTASKS /Create /S ABC /U domain\user /P password /SC MINUTE
                 /MO 5 /TN accountant /TR calc.exe /ST 12:00 /ET 14:00
                 /SD 06/06/2006 /ED 06/06/2006 /RU runasuser /RP userpassword

    ==> 创建计划任务 "gametime",在每月的第一个星期天
        运行“空当接龙”。

        SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN gametime
                 /TR c:\windows\system32\freecell

    ==> 在远程机器 "ABC" 创建计划任务 "report",
        每个星期运行 notepad.exe。

        SCHTASKS /Create /S ABC /U user /P password /RU runasuser
                 /RP runaspassword /SC WEEKLY /TN report /TR notepad.exe

    ==> 在远程机器 "ABC" 创建计划任务 "logtracker",
        每隔五分钟从指定的开始时间到无结束时间,
        运行 notepad.exe。将提示输入 /RP
        密码。

        SCHTASKS /Create /S ABC /U domain\user /P password /SC MINUTE
                 /MO 5 /TN logtracker
                 /TR c:\windows\system32\notepad.exe /ST 18:30
                 /RU runasuser /RP

    ==> 创建计划任务 "gaming",每天从 12:00 点开始到
        14:00 点自动结束,运行 freecell.exe。

        SCHTASKS /Create /SC DAILY /TN gaming /TR c:\freecell /ST 12:00
                 /ET 14:00 /K
    ==> 创建计划任务“EventLog”以开始运行 wevtvwr.msc
        只要在“系统”通道中发布事件 101

        SCHTASKS /Create /TN EventLog /TR wevtvwr.msc /SC ONEVENT
                 /EC System /MO *[System/EventID=101]
    ==> 文件路径中可以加入空格,但需要加上两组引号,
        一组引号用于 CMD.EXE,另一组用于 SchTasks.exe。用于 CMD
        的外部引号必须是一对双引号;内部引号可以是一对单引号或
        一对转义双引号:
        SCHTASKS /Create
           /tr "'c:\program files\internet explorer\iexplorer.exe'
           \"c:\log data\today.xml\"" ...

8.4.2 schtasks /Run

SCHTASKS /Run [/S system [/U username [/P [password]]]] [/I]
         /TN taskname [/HRESULT] [/?]

描述:
    按需运行计划任务。

参数列表:
    /S     system           指定要连接到的远程系统。

    /U     username      指定应在其中执行 schtasks.exe 的用户上下文。

    /P     [password]     为给定的用户上下文指定密码,如果省略则提示输入。

    /I                             忽略任何限制立即运行任务。

    /TN    taskname      指定要立即运行的任务的路径\名称。

    /HRESULT              为获得更出色的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?                            显示此帮助消息。

示例:
    SCHTASKS /Run /?
    SCHTASKS /Run /TN "\备份\启动备份"
    SCHTASKS /Run /S system /U user /P password /I /TN "\备份\备份和还原"

8.4.3 schtasks /End 

SCHTASKS /End [/S system [/U username [/P [password]]]]
         /TN taskname [/HRESULT] [/?]

描述:
    停止正在运行的计划任务。

参数列表:
    /S   system      指定要连接到的远程系统。

    /U   username    指定应在其中执行schtasks.exe 的用户上下文。

    /P   [password]  为给定的用户上下文指定密码。如果已忽略,将提示输入密码。

    /TN  taskname    指定要终止的任务的路径\名称。

    /HRESULT         为获得更出色的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?               显示此帮助消息。

示例:
    SCHTASKS /End /?
    SCHTASKS /End /TN "\备份\启动备份"
    SCHTASKS /End /S system /U user /P password /TN "\备份\备份和还原"

8.4.4 schtasks /Delete

SCHTASKS /Delete [/S system [/U username [/P [password]]]]
         /TN taskname [/F] [/HRESULT] [/?]

描述:
    删除一个或多个计划任务。

参数列表:
    /S   system         指定要连接到的远程系统。

    /U   username       指定 schtasks.exe  要执行的用户上下文。

    /P   [password]     指定给定用户上下文密码。如果省略则提示输入。

    /TN  taskname       指定要删除的任务的路径\名称。可以使用通配符 "*" 来删除所有任务。

    /F                  强制删除该任务,而且如果指定的任务当前正在运行,则抑制警告。

    /HRESULT           为获得更好的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?                  显示此帮助消息。

示例:
    SCHTASKS /Delete /TN * /F
    SCHTASKS /Delete /TN "\备份\备份和还原"
    SCHTASKS /Delete /S system /U user /P password /TN "\备份\启动还原"
    SCHTASKS /Delete /S system /U user /P password /TN "\备份\启动备份" /F

8.4.5 schtasks /Query

SCHTASKS /Query [/S system [/U username [/P [password]]]]
         [/FO format | /XML [xml_type]] [/NH] [/V]
         [/TN taskname] [/HRESULT] [/?]

描述:
    允许管理员显示本地或远程系统上的计划任务。

参数列表:
    /S    system         指定要连接到的远程系统。

    /U    username       指定 schtasks.exe 要执行的用户上下文。

    /P    [password]     指定给定的用户上下文密码。如果省略则提示输入。

    /FO   format            为输出指定格式。有效值: TABLE、LIST、CSV。

    /NH                       指定在输出中不显示列标题。只对 TABLE 格式有效。仅适用于 TABLE 和 CSV 格式。

    /V                            显示详细任务输出。

    /TN   taskname       指定要检索其信息的任务路径\名称,否则会检索所有任务的信息。

    /XML  [xml_type]     以 XML 格式显示任务定义。

                             如果 xml_type 为 ONE,则输出为一个有效 XML 文件。

                             如果 xml_type 不存在,则输出将为

                             所有 XML 任务定义的串联。

    /HRESULT             为获得更出色的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?                      显示此帮助消息。

示例:
    SCHTASKS /Query
    SCHTASKS /Query /?
    SCHTASKS /Query /S system /U user /P password
    SCHTASKS /Query /FO LIST /V /S system /U user /P password
    SCHTASKS /Query /FO TABLE /NH /V

8.4.6 schtasks /Change

SCHTASKS /Change [/S system [/U username [/P [password]]]] /TN taskname
     { [/RU runasuser] [/RP runaspassword] [/TR taskrun] [/ST starttime]
       [/RI interval] [ {/ET endtime | /DU duration} [/K] ]
       [/SD startdate] [/ED enddate] [/ENABLE | /DISABLE] [/IT] [/Z] }
       [/HRESULT] [/?]

描述:
    更改要运行的程序,或计划任务使用的用户帐户和密码。


参数列表:
    /S       system      指定要连接的远程系统。

    /U       username    指定应在其中执行 schtasks.exe的用户上下文。

    /P       [password]  指定给定用户上下文的密码。如果省略则提示输入。

    /TN      taskname    指定要更改的任务的路径\名称。

    /RU      username    更改必须在其中执行计划任务的
                         用户名(用户上下文)。对于系统帐户,
                         有效值为 ""、"NT AUTHORITY\SYSTEM" 或 "SYSTEM"。
                         对于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和
                         "NT AUTHORITY\NETWORKSERVICE"以及常见的 SID
                         对这三个也都可用。
    /RP      password    为现有用户上下文指定新密码或为新用户帐户指定密码。对系统帐户忽略此密码。

    /TR      taskrun     指定计划任务将运行的新程序。

    /ST      starttime   指定运行任务的开始时间。时间格式为 HH:mm (24 小时时间),例如 14:30表示 2:30 PM。

    /RI      interval    用分钟指定重复间隔。有效范围: 1 - 599940 分钟。

    /ET      endtime     指定运行任务的结束时间。时间格式为 HH:mm (24 小时时间),例如 14:50表示 2:50 PM。

    /DU      duration    指定运行任务的持续时间。 时间格式为 HH:mm。这不适用于 /ET。

    /K                   在结束时间或持续时间终止任务。

    /SD      startdate   指定运行任务的第一个日期。格式为 yyyy/mm/dd。

    /ED      enddate     指定任务应该运行的最后一个日期。格式为 yyyy/mm/dd。

    /IT                  仅有在 /RU 用户当前已登录且
                         作业正在运行时才可以交互式运行任务。
                         此任务只有在用户已登录的情况下才运行。

    /RL      level       设置作业的运行级别。有效值为
                         LIMITED 和 HIGHEST。默认情况下是不对其进行更改。

    /ENABLE              启用计划任务。

    /DISABLE             禁用计划任务。

    /Z                   标记在最终运行完任务后删除任务。

    /DELAY   delaytime   指定触发触发器后延迟任务运行的
                         等待时间。时间格式为
                         mmmm:ss。此选项仅对计划类型
                         ONSTART、ONLOGON 和 ONEVENT 有效。

    /HRESULT             为获得更出色的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?                   显示此帮助消息。

示例:
    SCHTASKS /Change /RP password /TN "\备份\备份和还原"
    SCHTASKS /Change /TR restore.exe /TN "\备份\启动还原"
    SCHTASKS /Change /S system /U user /P password /RU newuser
             /TN "\备份\启动备份" /IT

8.4.6 schtasks /ShowSid

SCHTASKS /ShowSid /TN taskname [/HRESULT] [/?]

描述:
    向任务的专用用户显示 SID。

参数列表:
    /TN  taskname    指定计划任务的路径\名称。

    /HRESULT         为获得更出色的故障诊断能力,处理退出代码将采用 HRESULT 格式。

    /?               显示此帮助消息。

示例:
    SCHTASKS /ShowSid /?
    SCHTASKS /ShowSid /TN "\备份\启动备份"

8.5 磁盘修复命令 sfc

SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=<file>] [/VERIFYFILE=<file>]
    [/OFFWINDIR=<offline windows directory> /OFFBOOTDIR=<offline boot directory> [/OFFLOGFILE=<log file path>]]

/SCANNOW        扫描所有保护的系统文件的完整性,并尽可能修复有问题的文件。
/VERIFYONLY     扫描所有保护的系统文件的完整性。不会执行修复操作。
/SCANFILE       扫描引用的文件的完整性,如果找到问题,则修复文件。指定完整路径 <file>
/VERIFYFILE     验证带有完整路径 <file> 的文件的完整性。不会执行修复操作。
/OFFBOOTDIR     对于脱机修复,指定脱机启动目录的位置
/OFFWINDIR      对于脱机修复,指定脱机 Windows 目录的位置
/OFFLOGFILE     对于脱机修复,通过指定日志文件路径选择性地启用记录

示例:

        sfc /SCANNOW
        sfc /VERIFYFILE=c:\windows\system32\kernel32.dll
        sfc /SCANFILE=d:\windows\system32\kernel32.dll /OFFBOOTDIR=d:\ /OFFWINDIR=d:\windows
        sfc /SCANFILE=d:\windows\system32\kernel32.dll /OFFBOOTDIR=d:\ /OFFWINDIR=d:\windows /OFFLOGFILE=c:\log.txt
        sfc /VERIFYONLY

8.6 磁盘操作相关命令 

8.6.1 将 FAT 卷转换为 NTFS convert

将 FAT 卷转换为 NTFS。

CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]


  volume        指定驱动器号(后面跟一个冒号)、装入点或卷名。
  /FS:NTFS    指定要将此卷转换为 NTFS。
  /V                 指定将在详细模式下运行 Convert。
  /CvtArea:filename   指定根目录中的一个连续文件,该文件将是 NTFS 系统文件的占位符。
  /NoSecurity    指定所有用户均可以访问转换文件和目录的安全设置。
  /X          如果必要,请先强制卸除卷。该卷的所有打开句柄将会无效。

8.6.2 创建、更改或删除磁盘的卷标 label

创建、更改或删除磁盘的卷标。

LABEL [drive:][label]
LABEL [/MP] [volume] [label]

  drive:          指定驱动器号。
  label           指定卷标。
  /MP             指定卷应被视为装入点或卷名。
  volume          指定驱动器号(后面跟一个冒号)、装入点或卷名。
                  如果指定了卷名,/MP 标志则不必要。

label命令常见案例
案例简述命令案例演示
更改、设置、创建磁盘的卷标(说白了就是磁盘名)

命令 label  驱动器 卷标名

设置d盘卷标为我的分区

删除磁盘卷标命令 label 驱动器

8.7 系统简单的信息命令

8.7.1 查看系统当前版本信息 ver 与 winver

ver 命令在cmd 窗口显示

winver 命令通过弹窗显示windows版本

8.7.2 查看主机名信息 hostname

 

第九章 批处理之网络命令 net (常用的)

NET 命令的选项有,详情文章可以参考以下两篇配合阅读

  1. NET命令详细解析
  2. dos下的net命令使用大全
  3. NET的基本用法

NET
    [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
      HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
      STATISTICS | STOP | TIME | USE | USER | VIEW ]

9.1 显示域列表、计算机列表或指定计算机的共享资源列表 net view

net view

显示域列表、计算机列表或指定计算机的共享资源列表

语法:NET VIEW
[\\computername [/CACHE] | [/ALL] | /DOMAIN[:domainname]]

参数说明:

/CACHE  缓存

/ALL  显示所有共享资源列表

\\computername  计算机名

/DOMAIN   域参数

domainname 域名,区别于网站的域名

1、查看当前域内计算机信息
net view

2、查看指定的共享资源计算机
net view \\computername(\\+计算机名)

3、查看指定域内的共享资源计算机
net view /domain:domainname(/domain:+域名)
如
net view /domain:LOVE查看LOVE域中的机器列表

9.2 设置计算机用户 net user / users

net user
或
net users 

添加或更改用户帐号或显示用户帐号信息

NET USER
[username [password | *] [options]] [/DOMAIN]
         username {password | *} /ADD [options] [/DOMAIN]
         username [/DELETE] [/DOMAIN]
         username [/TIMES:{times | ALL}]
         username [/ACTIVE: {YES | NO}]

参数说明:

username  用户名

password 密码

/DOMAIN 域

/ADD 添加用户

/DELETE 删除用户

/TIMES 限制用户登陆电脑的时间

若电脑使用12小时制输入net user A B /times:monday-friday,8AM-10PM;saturday-sunday,7PM-9PM
若电脑使用24小时制输入net user A B /times:M-F,8:00-22:00;Sa-Su,19:00-21:00
命令注解:
1,Time的增加值限制为1小时。
2,对于Day值,可以用全称或缩写(即  M、T、W、Th、F、Sa、Su)。
3,可以使用12小时或24小时时间表示法。对于12小时表示法,请使用AM、PM或A.M.、P.M.。All值表示用户始终可以登录;空值(空白)意味着用户永远不能登录。
4,用逗号分隔日期和时间,用分号分隔日期和时间单元(例如,M,4AM-5PM;T,1PM-3PM)。指定时间时不要使用空格。

/ACTIVE: {YES | NO} 用户状态       /ACTIVE:YES 用户启用   /ACTIVE:NO 用户禁用

1、显示当前计算机的用户账号列表
net user

2、设置新用户(用户名test密码123)
net user test 123 /add

3、删除特定用户(删除test用户)
net user test /delete

4、设置用户状态(启用YES,禁止NO)
net user test /active:yes

5、设置用户限制登陆时间24小时制
(设置test用户登陆时间为周一到周五8:00-22:00,周末19:00-21:00)
net user test /times:M-F,8:00-22:00;Sa-Su,19:00-21:00

9.3 启动计算机服务 net start

net start [service]
1、显示已启动的服务
net start

2、启动特定服务(有空格记得使用"")
net start "Windows 安全中心服务"

9.4 暂停、挂起计算机服务 net pause

net pause [service]
1、暂停、挂起服务
net pause workstation

9.5 继续已暂停或挂起的计算机服务 net continue

net continue [service]
1、继续已暂停或挂起的计算机服务、
net continue workstation

9.6 停止 Windows NT 网络服务 net stop

net stop [service]
NT网络服务可选参数介绍
服务说明
alerter警报
client service for netwareNetware 客户端服务
clipbook server剪贴簿服务器
computer browser计算机浏览器
directory replicator目录复制器
ftp publishing service (ftp)ftp 发行服务
lpdsvc 

messenger

信使
net logon网络登录
network dde网络 dde

network dde dsdm

网络 dde dsdm

network monitor agent网络监控代理

nt lm security support provider

NT LM 安全性支持提供

ole对象链接与嵌入

remote access connection manager

远程访问连接管理器

remote access isnsap service远程访问 isnsap 服务

remote access server

远程访问服务器
remote procedure call (rpc) locator远程过程调用定位器

remote procedure call (rpc) service

远程过程调用服务
schedule调度
server服务器

simple tcp/ip services

简单 TCP/IP 服务
snmp 
spooler后台打印程序

tcp/ip netbios helper

TCP/IP NETBIOS 辅助工具
ups 
workstation工作站

第十章 批处理之其他命令

10.1 日期命令 date(管理员模式修改)

DATE  [/t] [<year-month-day>]

/t   不再提示输入新日期,直接显示当前日期

<year-month-day>      设置指定的日期,其中 month 是月份 (一位或两位数字,其中包括值1到 12) , day 是 (一位或两位数字的日期,包括值1到 31) , 年份 是 (两个或四个数字的年份,其中包括值00到99或1980到 2099) 。 

必须将年、月和日的值分别用句点 (. ) 、连字符 (-) 或斜线标记 (/) 分隔开。以下三种格式都可以

2021.02.01
2021-02-01
2021/02/01

注意: 请注意,如果使用2位数表示年份,则值80-99 对应于1980到1999。

补充:我的win10系统日期格式是年月日这种形式。并不是官方文档的那个月日年,不太清楚是否是新版本支持年月日格式,请自行查看自己系统的是使用哪个格式

1、显示当前日期(会出现输入新日期的提示)
date

2、不提示输入新日期直接输出当前日期
date /t

3、设置新日期
date 2021-02-01
或
date 2021.02.01
或
date 2021/02/01

或者date后回车输入

10.2 时间命令 time(管理员模式修改)

TIME [/t] [<HH>[:<MM>[:<SS>]] [am|pm]]]

/t   不再提示输入新时间,直接显示当前时间

将系统时间设置为指定的新时间,其中, HH 以小时为单位 (必需) , MM 为分钟, SS 以秒为单位。 NN 可用于指定百分之几秒。 必须用冒号分隔 HH、 MM和 SS 的值 (: ) 。 SS 和 NN (毫秒)必须用句点 ( 分隔。 ) 。

如果未指定 am 或 pm ,则默认情况下, time 使用24小时格式。

1、显示当前时间(提示输入新时间)
time

2、显示当前时间(不提示输入新时间)
time /t

3、修改时间
time 21:10:03

补充:时间修改后如何重新同步时间服务器的北京时间

C:\Users\Administrator>net start w32time
Windows Time 服务正在启动 .
Windows Time 服务已经启动成功。

C:\Users\Administrator>w32tm /resync
#同步时间,resync(重新同步)
将 resync 命令发送到本地计算机
此计算机没有重新同步,因为没有可用的时间数据。

C:\Users\Administrator>net stop w32time
#关停服务

10.3 命令窗口修改命令

1、mode 改变窗口大小(model)

配置系统设备。

串行端口:          MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
                                [to=on|off] [xon=on|off] [odsr=on|off]
                                [octs=on|off] [dtr=on|off|hs]
                                [rts=on|off|hs|tg] [idsr=on|off]

设备状态:          MODE [device] [/STATUS]

打印重定向:        MODE LPTn[:]=COMm[:]

选择代码页:        MODE CON[:] CP SELECT=yyy

代码页状态:        MODE CON[:] CP [/STATUS]

显示模式:          MODE CON[:] [COLS=c] [LINES=n]

击键率:            MODE CON[:] [RATE=r DELAY=d]

1、mode con,这样就能看出来当前CMD窗口的行和列的一些设置

2、设置cmd窗口大小

右键cmd窗口查看属性,发现CON状态的行列与屏幕缓冲区大小一致

mode con cols=100 lines=30 设置列数100,行数30

2、 color 改变窗口中字体颜色

COLOR [attr]

  attr        指定控制台输出的颜色属性。

颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个对应于前景。每个数字可以为以下任何值:

    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

注意:十六进制数字不区分大小写,且设置仅限于当前窗口生效,重启cmd会重置

设置背景色为黑色,前景色(字体颜色)为浅绿色
color OA

3、title 改变窗口标题内容

TITLE [string]

  string       指定命令提示窗口的标题。

title 我的程序

10.4 逐屏显示输出命令 more 

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]

MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

    [drive:][path]filename  指定要逐屏显示的文件。

    command-name            指定要显示其输出的命令。

常用命令用红色标注!

    /E      启用扩展功能
    /C      显示页面前先清除屏幕(先清屏再显示)
    /P      扩展 FormFeed 字符
    /S      将多个空白行缩成一行
    /Tn     将制表符扩展为 n 个空格(默认值为 8)

            开关可以出现在 MORE 环境变量中。
    +n      从第 n 行开始显示第一个文件

    files   要显示的文件列表。使用空格分隔列表中的文件。
            如果已启用扩展功能,则在 -- More -- 提示处 接受下列命令(键盘输入的扩展功能):
    P n 显示下 n 行(先按P键再根据提示输入行数n
    S n 跳过下 n 行(先按S键再根据提示输入行数n
    F 显示下个文件 (按F键显示下一个文件
    Q 退出 (按Q键退出
    = 显示行号 (按=键显示行号
    ? 显示帮助行 
    <space> 显示下一页(逐页显示
    <enter> 显示下一行(逐行显示

more命令常见案例
案例简述命令案例演示
逐屏显示文件内容(单个文件)

more 文件名

 

 

逐屏显示文件内容(多个文件)

more 文件1 文件2 ... 文件n

多个文件时可以按相应的键位进行进一步操作

按F键 显示下一个文件

按Q键 退出

 

压缩多行空行变为为一行空行more 文件 /S
从第几行开始显示文件内容more +n 文件(n代表行数)
显示后面n行的内容P n(n代表后面需要再显示行数)

按P键,出现行数输入提示,输入显示行数后回车

跳过后面n行的内容S n(n代表后面需要跳过的行数)

按P键,出现行数输入提示,输入显示行数后回车(跳过5行)

显示行号=

10.5 特殊变量

如错误数字代码的变量(errorlevel)可以用来判断命令运行情况

 

第十一章 批处理之常见问题

11.1 set 命令中的变量空格的问题

问题描述演示(重现问题)解决

使用set命令设置变量的时候可能由于习惯的原因会在变量名和=间加上空格分隔

(a=XXX 变成a =XXX)

此时变量a就会变成变量a 这个名字

注意写变量的时候空格问题

11.2 for 语句中%%与%的用法

问题描述演示(重现问题)解决
使用for语句的时候在命令行模式下使用%%书写变量会提示不应该使用%%。

命令行模式:%%书写变量

批处理程序:%书写变量

11.3 路径出现空格报错问题

问题描述演示(重现问题)解决
在书写路径的时候有时候会出现带空格的路径,由于系统默认使用空格当作分隔符,所以会将路径分隔开,导致路径不完整而的报错

1、""括起带空格的部分

2、""括起整个路径

11.4 cmd控制台输出utf-8编码中文乱码问题

问题描述演示(重现问题)解决
我们使用cmd控制台输出中文的时候可能会出现乱码的情况,原因是文件自身编码格式与cmd不符


 

1、文件另存为选ANSI编码即可

2、修改cmd的代码页面(无需改文件编码)

第十二章 dos命令案例

12.1 网络故障排查(ping)

1、本机tcp/ip协议检查
ping 127.0.0.1   或  ping loaclhost

2、检查网关连接是否畅通(ping路由器ip,假设为192.168.3.1)
ping 192.168.3.1

3、检查电脑与外网连接是否畅通(ping 外网网址)
ping www.baidu.com

12.2 系统激活slmgr

1、查看系统激活信息 
slmgr /dli  或者 slmgr /xpr

2、卸载产品密钥 
slmgr /upk

3、安装产品密钥 
slmgr /ipk  + 密 钥

4、设置管理服务计算机名 
slmgr /skms 计算机名

5、激活产品 
slmgr /ato

12.3 CMD通讯录查询(语句块,findstr)

@echo off
title *员工通讯录查询*
mode con cols=40 lines=20

:start
set /p a=请输入需要查询的信息:
type 通讯录.txt | findstr %a%
echo -----------------------------------

if %a%==Q (goto ends) else (goto start)

:ends
exit
pause>nul

虚拟通讯录名单:

1    张三    130-0000-1111
2    李四    154-0000-2222
3    王五    189-0000-3333
4    赵六    129-0000-4444
5    刘七    158-0000-5555
6    小明    186-0000-6666
7    小红    187-0000-7777
8    小亮    136-0000-8888
9    小军    135-0000-9999
10    小飞    189-0000-0000

12.4 CMD关键字查询(start)

这里我们使用的start启动百度搜索网站搜素输入的关键词

百度默认搜索的url如下,我们只需要动态修改关键字即可

https://www.baidu.com/s?wd=关键字

@echo off
set /p a=请输入你要搜索的关键字:
start https://www.baidu.com/s?wd=%a%

12.5 获取计算机已连接过的wifi密码(netsh)

netsh wlan show profiles name="WiFi的ssid" key=clear

12.6 端口占用处理

1、查询程序端口连接情况的
tasklist /FI "IMAGENAME eq cloudmusic.exe"

或者查询任务管理器查看PID

2、通过程序PID强制中断进程及其子进程
taskkill /PID 12088 /F /T

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
批处理的语句及用法 例 .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从 更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由 专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos批处理却又完全 不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ==== 注 =================== 处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应 用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其 次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来 循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理程序语句就是一条条的DOS命令(包括 内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== 注 ================== 处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的 exe文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 ===========================
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

林→白↑白→

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值