[]代表可写可不写,cmd不区分大小写,文中没给出的参数代表不常用
内部命令
1.cd /d d: 改变当前磁盘
跳转c盘可直接用c:,不用cd命令
2.cls清屏
3.copy con 文件名 //从键盘上输入数据建立文件,ctrl+z结束输入
copy 文件名 e:\ //e盘不存在相同文件则直接复制,e盘存在相同文件,则覆盖
copy 文件名1 文件名2 //将文件1中的内容覆盖进文件2中,文件2名字不变
copy 文件名1+文件名2 [目标文件] //组合复制,不给出目标文件名复制出文件名默认为文件1的名字,复制出的文件末尾会多一个
4.date 2019/03/31 //更改当前日期,带参数/t则只显示日期不修改
5.time 14:23 //更改当前时间,带参数/t则只显示时间不修改
6.del 文件名 /p /f /ah //参数p提示是否删除此文件,参数f强制删除只读文件,参数/q不提示是否删除,参数/s同时删除子目录匹配的文件,参数a根据属性删除文件
7.dir [路径] /s /p /ah //带s参数显示所有子目录文件,带a参数根据文件属性显示,带p参数以滚动屏幕形式显示
8.md \文件夹1\文件夹2 \文件夹1\文件夹3 //如果文件夹1不存在那么创建文件夹1同时创建子文件夹2与文件夹3,如果文件夹1存在,那么只创建子文件夹2,3
9.rd 文件夹1\[文件夹2] /s /q //带s参数表示删除目录及其子目录所有文件,带q参数取消删除提示
10.ren 文件名或文件夹名 新名字 //重命名文件名或文件夹名
11.type 1.txt //显示文件中的文本内容(文本过多显示不完整)
12.path e:\1; //只接一个分号清除所有可执行文件搜索路径,带路径则设置新的搜索路径,不接则直接显示路径
13.replace 1.txt e: /s //带s参数替换目录及子目录下的1.txt文件
14.move 1.txt e: /y //带y参数移动文件取消覆盖提示
15.title admin //设置cmd窗体标题为admin
16.color 1c //第一个数字为背景色,第二个数字为字体色,数字范围为0-f(16进制)
17.assoc/ftype //当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开,而是先判断.txt属于 txtfile '文件类型',再调用 txtfile 关联的命令行 txtfile=%SystemRoot%system32NOTEPAD.EXE %1
assoc .txt=txtfile //assoc 设置'文件扩展名'关联,关联到'文件类型'
ftype txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1 //ftype 设置'文件类型'关联,关联到'执行程序和参数'
18.pushd/popd //文件夹栈的操作,入栈与出栈
@echo off
cd /d d:
md 1
cd /d e: //进入e盘
pushd d:1 //保存当前位置,并进入d盘1文件夹
popd //恢复之前e盘位置
pause
外部命令:
1.attrib +s +h 文件名 /s /v 设置文件/文件夹属性
2.chkdsk [drive:] /f 检查并修复磁盘
3.defrag [drive:] /f //整理卷标碎片
4.tree [dirive:] /a /f //带f参数显示文件名称,带a参数使用ASCII字符显示
5.format [dirive:] e: /fs:fat32 /q /a:4096 /v:newname /c //带参数fs指定新的文件系统类型,带参数q快速格式化,带参数a指定新的单元大小,带参数v指定卷标名字,带参数c启用文件压缩(仅用于ntfs文件系统)
6.label [drive:] 新卷名 //设置新的卷标名
7.vol [drive:] //显示此卷标名
8.xcopy d:*.* e: /e /h /d:2019-02-23 //带参数e表示复制目录和子目录,包括空的,带参数h也复制隐藏文件,带参数d更改文件时间
9.fc 1.txt 2.txt //比较两个文件
10.find "字符串" 1.txt /n /i //寻找1.txt里包含字符串的行,参数n显示行,参数i忽略大小写
11.more 1.txt //逐屏显示1.txt 的文件内容
12.findstr "字符串" //可用表达式匹配内容
windows系统管理命令
1.tasklist /s /u:user /p:password //连接远程系统显示进程
2.taskkill /pid pid /f /t //终止pid为pid的进程,f参数强制终止,t参数终止进程和由它启动的子进程
3.at命令以升级为schtasks命令
schtasks /create /sc daily /tn call /tr d:\call.cmd /st 20:52 /et 21:10 /k
4.shutdown /s /t 666 //关机命令,a参数取消关机
5.sc //系统服务设置与控制
6.reg //注册表控制台工具
7.powercfg //控制系统上的电源设置
特殊符号
通配符 ?代表单个字符。* 代表全部字符
1.转义字符^,取消特殊字符的作用: echo ^& //将&转义成普通字符
2.(管道)传递符|,将前面一条命令的执行结果传递给后面一条命令继续执行:echo 0123456 | find "123" //将0123456 传递给find 查找 123
3.|| 连接符,当前面的命令没有成功执行 则执行后面的命令 可以作判断选择用:echo 0123456 | find "789" || echo 字符中没有789
4.&& 连接符,当前面的命令成功执行 再执行后面的命令:echo 0123456 | find "123" && echo 字符中含有123
5.&连接符,无论前面的命令是否成功执行,都执行后面的:echo 0123456 | find "789" & echo 字符中含有123
6.> 定向符,将输出的内容重定向到指定(文本中):echo 123456789>1.txt //如果是 >nul则是输出到空设备中,起屏蔽屏幕输出的作用,pause>nul将命令的提示屏蔽掉
7.>> 定向符(追加),将输出内容写入指定(文本中),">>" 则是在文本的最后添加内容
8.<输入定向符,从指定的(文本)第一行输入内容:set /p wind=<1.txt
9.@,一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上
10.:冒号主要用于标签使用
11.%变量名%,echo 变量 str 的值是: %str% //变量引用
12.%0-%9,%0代表文件本身路径字符串,%1-%9表示待传入的参数,%*从第一个参数开始的所有参数,调用一个文件并传入参数命令:call call.cmd 参数1 参数2 参数3,要使用这些参数只需在call.cmd中使用%1,%2
%~0-%~9表示去掉外侧引号,
%~[f:file][d:drive][p:path][n:name][x:extension][s:size][a:attribute][t:time][z:size][$path:][0-9]:批参数(%n)的已被增强,可通过组合如%~ft0得到更多结果,
%在 set /a 语句中时,表示两数相除取余数,
它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中输出%需要在%多加一个%来转义,写成set /a num=4%%2
13.:表示该行是一个标签,它之后的内容是一个标签段,如:test
::连续两个冒号打头表示该行内容为注释内容,实际上,:: 是个无效的标签名,:加上空格同样可以起到注释的作用,此时,::的功能和注释命令rem相同,注释语句推荐使用::的格式
14.()小括号对经常出现在for语句和if语句中,还有一些特定场合;
if %errorlevel%==0 (echo 0) else echo 1
15.~常用于set中截取字符串
用于%0-%9后面形成%~0-%~9删除最外侧的一对双引号
batch批处理命令
1.@echo off //关闭回显后,命令将不会显示在界面
2.set
set var=this is a variable //设置自定义变量
set /p var=请输入变量的值 //带p参数用户自主输入字符串(promptString),也可用<1.txt文本第一行作为值
set /a var=2 - 1 //a参数就是set可以支持数学运算和逻辑运算
set newVar=%oldVar:str1=str2% //将变量oldVar的值中的str1替换成str2,并将替换后的变量值赋给newVar,此例主要是对:的运用
set var=%a:~1,2% //运用~符号截取索引为1到2的字符串,索引从0开始
set var=%a:~-1% //运用~符号与负数截取倒数第一位的字符
set var=%a:~0,-1% //截取索引为0到倒数第一位的字符串
3.call
call 1.cmd //调用另外一个批处理文件
call :label //调用标签
此命令用来从一个批处理脚本中调用另一个批处理脚本,并且不终止父批处理程序(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)
*call与goto区别
call命令对跳转标签的调用,调用时必须在标签名前加冒号,而goto是直接跟标签名,
call对标签调用后,依旧会重新执行call后的代码,而goto不会。
4.start
start calc //打开一个windows程序
start 1.cmd //启动一个批处理文件/可执行文件
*start与call的区别
call的时候,他们拥有同一个壳cmd.exe,在同一个进程当中,所以他们的变量是互通的
start的时候,他们拥有两个壳cmd.exe,但child.bat可以看成是main.bat的子进程,子进程可以读取父进程中的变量
对于start,概括两句话:“不同进程不能传值”,“相同进程单向传值,老子传儿子,儿子不传老子”。
对于call,“同一进程,变量互通”。
5.goto
goto label //goto到执行标签名为label下的代码
6.pause //暂停命令
7.errorlevel:echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码,默认值为0,一般命令执行出错会设 errorlevel 为1,还有2,3,4,5错误
8.if
if "%errorlevel%"=="0" (echo 0) else echo 1 //检测字符串
if %num1% gtr %num2% echo %num1%大于%num2% //检测数值,批处理中大于符号不能用〉,而用"gtr",比较运算符一览: EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于
if errorlevel 0 ECHO 0 //if结合errorlevel使用,if里可直接用errorlevel或%errorlevel%引用
if defined str1 echo str1已经被定义 //检测某个变量是否已经被定义
9.for [参数] %i in (set) do command //参数可有可不有,%i在批处理文件中要用%%i,变量名i可用小写a-z或者大写A-Z,区分大小写,FOR会把每个读取到的值给它,set表示相关文件集合或命令可用?*通配符,command表示执行的命令
for %i in (*.*) do @echo %i //无参数输出每个文件名字
for /d %i in (d:\*) do @echo %i //参数d表示自能显示目录
for /r [drive:] %i in (*.exe) do @echo %i //参数r表示递归遍历所有目录,不加drive:表示当前磁盘
for /l %i in (start,step,end) do @echo %i //参数L表示以增量从start开始,step表示增量可以为负,end表示总个数
for /f ["option"] %i in (具体的一个文件)do @echo %i //参数f表示文件解析,将文本每一行传入i来处理
//OPTION关键字详解:
eol=c:指一个行注释字符的结尾(就一个)。例如:eol=; --忽略以分号打头的那些行;
skip=n:指在文件开始时忽略的行数。例如:skip=2 --忽略2行;
delims=xxx:指分隔符集。这个替换了空格和跳格键的默认分隔符集。例如:[delims=, ] --指定用逗号,空格对字符串进行分隔。
tokens=x,y,m-n:令牌的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个,同时tokens支持通配符*,以及限定范围tokens=2,3或tokens=2-3,
for /f "tokens=2,3 delims= " %i in (a.txt) do echo %i %j //这是因为你的tokens后面要取每一行的两列,用%i来替换第二列,用%j来替换第三列,并且必须是按照英文字母顺序排列的,%j不能换成%k,因为i后面是j
for /f "tokens=* delims= " %i in (a.txt) do echo %i //通配符*,就是把这一行全部或者这一行的剩余部分当作一个元素
for /f "tokens=2,* delims= " %i in (a.txt) do echo %i %j //用%i代替第二列,用%j代替剩余的所有
10.setlocal/endlocal //仅在批处理文件中可用
代码如下: SETLOCAL在bat中经常用作临时改变系统变量,以方便批处理的运行,但当ENDLOCAL后我们可以看到他又被还原成了系统的默认路径。
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。
达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。
@ECHO OFF
SETLOCAL
SET PATH
SET PATH=E:\TOOLS
SET PATH
ENDLOCAL
SET PATH
PAUSE