DOS常用命令

帮助:

help   : 显示cmd中所有可以用的命令

help  命令名  : 显示某条命令的使用帮助

命令名  /?   : 显示命令的使用帮助

用户账户管理:

net user : 查看有哪些用户 

net user 帐户名 : 查看帐户的属性

net password 密码 : 更改系统登陆密码 

net user 用户名 密码 /add : 建立用户

net user 用户名 /delete : 删除用户

net localgroup administrators 用户名 /add : 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数 

net user guest /active:yes : 激活guest用户 

文件和目录:

chdir  : 显示当前目录

盘符:  : 进入某个磁盘目录(如 E: 、 C:)

cd  目录名  : 进入其它目录

dir   :  显示当前目录下的文件

tree  /f  .  : 以树形目录显示目录树

md 文件夹名 : 创建一个文件夹

type 文件名 : 显示文本文件内容,创建空文件:type nul>a.txt ,重定向:type a.txt > b.txt

more 文件名 : 逐屏显示输出

echo 消息 : 显示消息或者将命令,相当于cout,如创建非空文件:echo a>a.txt ,显示环境变量:echo %path%

@echo off : 执行以后,后面所有的命令均不显示,包括本条命令。

echo off  : 执行以后,后面所有的命令均不显示,但本条命令:echo off 是显示的

copy 源文件或目录 目的文件或目录 : 将源文件或目录复制到目的文件或目录,如创建空文件:copy nul a.txt

del 文件名   : 删除文件

rd  /s  /q  目录名 : 删除目录及目录下所有文件,删除时无需确认,直接删除。

ren 源文件或目录名  新文件或目录名 : 重命名文件或者目录

系统服务管理:

net start:查看已经启动的服务

net start 服务名 : 开启服务(如:net start telnet, net start schedule) 

net stop 服务名 : 停止某服务

net pause 服务名 : 暂停某服务

net view : 查看本地局域网内开启了哪些共享

tasklist : 查看正在运行的进程

taskkill /pid 2345  /f  /t  : 结束pid为2345的进程,/f表示强制关闭,/t表示同时结束该进程创建的子进程,详细使用请使用:taskkill  /?

taskkill /im xxx.exe  /f  /t  : 结束进程映像为xxx.exe的进程,/f表示强制关闭,/t表示同时结束该进程创建的子进程,详细使用请使用:taskkill  /?

环境变量:

set : 查看所有环境变量

set path : 查看以path开头的环境变量(或使用:echo %path%)

set 环境变量名=变量内容 : 设置临时环境变量(该操作会覆盖以前的环境变量,这个变量相当于程序中的局部比变量) 

set /p 变量名=<文件名 : 把文件的第一行赋值给变量。

set /p 变量名=请用户输入 : 打印:请用户输入,用户输入的值赋给变量名

set 变量名=%变量名%;变量内容 : 追加临时环境变量(注:变量只在当前的cmd窗口有作用(局部生效),如果想要设置持久的环境变量需要我们通过两种手段进行设置:一种是直接修改注册表,另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量。)

setx 变量名=%变量名%;变量内容  :  追加永久环境变量

网络管理:

ping IP/域名:测试与目标主机是否联通:

arp -a : 查看所有的ARP缓存

nslookup :查看DNS服务器

ipconfig : 显示系统网络设置 

netstat -an :显示所有连接和侦听端口

netstat -r : 显示路由表

netstat -p 协议名:  查看某协议使用情况,例:netstat -p tcp(查看tcp协议使用情况) 

netstat -s 查看正在使用的所有协议使用情况 

tracert 主机:自己到目标主机经历了哪些路径(路由节点)

pathping 主机:与tracert功能相似,只显示节点,不显示连接时间

系统工具:

shutdown:关闭计算机(可以设置定时关机)

shutdown /l : 注销(也可以用: logoff)

shutdown /h :  休眠

shutdown /r : 重启计算机

shutdown /s  :  关闭计算机(默认一分钟后关闭)

shutdown /p  :  强制关闭计算机

shutdown /t 40 : 40秒后关闭计算机

shutdown  /a : 终止系统关闭,将在超时时使用

winver : 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名) 

taskmgr : 调出任务管理器 

color XY : 设置cmd小黑窗的颜色,X代表背景色,Y代表前景色,如果没有参数则default值。
    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

title 标题名字 :  更改CMD窗口标题名字。

prompt 名称 :  更改cmd.exe的显示的命令提示符。

start cmd : 打开另外一个cmd窗口

start /min xxx.bat : 以最小化方式运行某个bat文件,不加/min则会弹出cmd窗口。

批处理命令与变量(终极大招):

    1、for循环的使用:

命令格式:for /参数  %variable in  (set) do command [command_parameters] 

1)%variable:指定一个单一字母可替换的参数,如:%i 。但在.bat文件中使用时,要用%%i。
2)(set) : 指定一个或一组文件或一个集合,可使用通配符。单个文件:(D:\user.txt),一组文件:(*.*),一个集合:(1,1,254),“(1,1,254)”中第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;
3)command:指定对第%variable个文件执行的命令,如:echo命令;如要执行多个命令时,命令这间用'&'号来隔开 ,如(command1)&(command2)&(。。)。。。;
4)command_parameters:为特定命令指定参数或命令行开关 

5)参数和示例:

空  : 显示集合中的所有元素或目录下所有文件和文件夹。

for %i in (1,1,10) do echo %i :打印出:1 1 10 ,共三个数

for %i in (*.*) do echo %i   : 打印出当前目录下所有文件夹和文件

/D :参数只能显示当前目录下的目录名字,

for /d %i in (*.*) do echo %i : 打印出当前目录下的所有文件夹

for /d %i in (c:\*) do echo %i : 显示c盘根目录下的所有目录

for /d %i in (???) do echo %i   :显示当前目录下名字只有1-3个字母的目录

/L :该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step

for /L %i in (1,1,10) do echo %i  : 打印出:1 2 3 。。。10,共10个数

for /l %i in (100,-20,1) do echo %i :输出:100 80 60 40 20

for /l %i in (1,1,5) do start cmd : 打开5个CMD窗口

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

for /r c:\ %i in (*.exe) do echo %i : 把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了

/F :使用文件解析来处理命令输出、字符串及文件内容。

命令格式:for /f ["options"] %%i  in  (file) do command 

file为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行。

实例:假如文件a.txt中有如下内容:
第1行第1列 第1行第2列 第1行第3列
第2行第1列 第2行第2列 第2行第3列

第3行第1列 第3行第2列 第3行第3列

1)for /f %%i in (a.txt) do echo %%i  
因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,因此输出结果为:
第1行第1列 第1行第2列 第1行第3列
第2行第1列 第2行第2列 第2行第3列

第3行第1列 第3行第2列 第3行第3列

2)我们发现for /f会默认以每一行来作为一个元素,但是如果我们还想把每一行再分解更小的内容,该怎么办呢?不用担心,for命令还为我们提供了更详细的参数,使我们将每一行分为更小的元素成为可能。它们就是:delims和tokens。delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键。tokens来控制要取哪一个或哪几个。比如下面的命令:

for /f "delims= " %%i in (a.txt) do echo %%i
显示的结果是:
第1行第1列
第2行第1列
第3行第1列

3)但是这样还是有局限的,如果我们想要每一行的第二列元素,那又如何呢?这时候,tokens跳出来说,我能做到。它的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。还是上面的例子,执行如下命令:
for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i
执行结果:
第1行第2列
第2行第2列
第3行第2列
同时tokens支持通配符*,以及限定范围。如果要显示第二列和第三列,则换成tokens=2,3或tokens=2-3,如果还有更多的则为:tokens=2-10之类的。此时的命令为:
for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j
怎么多出一个%%j?这是因为你的tokens后面要取每一行的两列,用%%i来替换第二列,用%%j来替换第三列。并且必须是按照英文字母顺序排列的,%%j不能换成%%k,因为i后面是j。执行结果为:
第1行第2列 第1行第3列
第2行第2列 第2行第3列

第3行第2列 第3行第3列

4)最后还有skip合eol,这俩个简单,skip就是要忽略文件的前多少行,而eol用来指定当一行以什么符号开始时,就忽略它。比如:
for /f "skip=2 tokens=*" %%i in (a.txt) do echo %%i
结果为:

第3行第1列 第3行第2列 第3行第3列

用skip来告诉for跳过前两行。如果不加tokens=*的话,执行结果为:

第3行第1列

不知道怎么回事。
再如,当a.txt内容变成:
.第1行第1列 第1行第2列 第1行第3列
.第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列 第3行第3列
执行for /f "eol=. tokens=*" %%i in (a.txt) do echo %%i结果是:

第3行第1列  第3行第2列  第3行第3列

用eol来告诉for忽略以“.”开头的行。同样也必须加tokens=*,否则只会显示“第3行第1列” 

注:在.bat文件中,如果命令带有转义符,需要在转义符前面加上:^

    2、if条件语句的使用:

命令格式:if 条件表达式 (语句1) else (语句2)

它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。i

1)判断驱动器、文件或文件夹是否存在,用 if exist 语句

例如:if exist c:\xue51com.txt (echo c盘下有xue51com.txt存在) else (echo c盘下不存在xue51com.txt)

2)判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句

例如:if "xue"=="xyz" (echo 字符串xue等于字符串xyz) else (echo 字符串xue不等于字符串xyz),这个例子主要是检测字符串(注意,用if检测字符串是否相等的时候,后面用的不是“=”,而是“==”)

3)判断某两个数值是否相等,用 if 数值1 equ 数值2 语句
举例:if 1 equ 2 (echo 1等于2) else (echo 1不等于2),这个例子功能是检测数值:

(注意,批处理中大于符号不能用:“>”,而用"gtr",其它的也类似。 比较运算符一览: EQU - 等于 、NEQ - 不等于 、LSS - 小于 、LEQ - 小于或等于 、GTR - 大于 、GEQ - 大于或等于 )

if和for嵌套:

for /L %i in (1 1 10) do (if %i equ 5 (echo %i) else (echo 0) )

4)判断某个变量是否已经被赋值(这里要用set来赋值),用 if defined str 语句

举例:if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)

5)if结合errorlevel使用
说明:环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等
IF-ERRORLEVEL
举例:
XCOPY F:\test.bat D:\
IF ERRORLEVEL 1 ECHO 文件拷贝失败
IF ERRORLEVEL 0 ECHO 成功拷贝文件

如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

    3、goto语句的使用:

@echo off
set /p input=请输入字母A或B: 
if "%input%"=="A" goto A 
if "%input%"=="B" goto B 
pause

exit 

:A 
echo 您输入的字母是A 
pause 

exit

:B 
echo 您输入的字母是B 
pause 
exit

注:pause也是一条命令,作用就是使程序暂停,也就是输出“请按任意键继续…”的原因。

    4、call语句的使用:

第一个bat文件中:call  xxx.bat  参数1 参数2  。。。

xxx.bat文件中:echo %1  echo  %2  

注:第二个bat中,%1  %2 就是引入俩的变量。也可以定义label像goto那样:call :label。

延迟环境变量扩展:

    CMD在解释命令时,首先会把一条完整的命令进行读取,然后进行匹配操作,匹配时他会把命令里的变量用变量的值挨个替换掉,然后执行这个替换好的命令.问题就出在"一条完整的命令",在BAT中,IF、FOR这样的命令都可以加括号,将一些命令嵌套在里面执行.这样的话对于一条可以加扩号嵌其他命令的命令,它的完整格式就是
for %%i in (....)这样一个整体.此时,如果我们如果在括号里面嵌入一些设置变量值的命令,就会出现问题了!
看例子
@echo off
for /l %%i in (1,1,5) do (
    set var=%%i
    echo %var%
)
按理说执行结果应该是
1
2
3
4
5
但执行后却显示5个空行的错误提示!为什么?根据我们上面说的知识来理解
@echo off
set var=test
for /l %%i in (1,1,5) do (
    set var=%%i
    echo %var%
)

这个就会打印5个test了,说明for /l %%i in (1,1,5) 没有起作用。如果只有环境变量扩展这个过程的话,如果我们在可以嵌套命令的命令中执行赋值操作时,会让我们的BAT出现给变量赋值的问题。

    我们可以用:setlocal enabledelayedexpansion,这个命令来启用"延迟环境变量扩展" 。在我们启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一次,然后再进行匹配操作,这样我们的赋值操作就会完成.并且再"延迟环境变量扩展"启用后, CMD会用!号来判断这是不是一个变量,如没启用延迟环境变量扩展时,CMD用%name%这样的格式判断变量,启用后就用!name!这样的格式判断了,这个符号我们需要注意!

@echo off
setlocal ENABLEDELAYEDEXPANSION
set var=test
for /l %%i in (1,1,5) do (
    set var=%%i
    echo !var!
)
执行结果应该是
1
2
3
4
5

弹窗和系统语音:

msg %username% /time:10 "内容"

mshta vbscript:msgbox("内容",64,"title")(window.close)

mshta vbscript:CreateObject("Wscript.Shell").popup("内容",7,"title",64)(window.close)

mshta "javascript:new ActiveXObject('WScript.Shell').popup('内容',7,'title',64);window.close();"

注:只有最后一种可以在for循环中使用。

mshta vbscript:createobject("sapi.spvoice").speak("Good luck")(window.close)  //调用系统语音

远程连接:

ftp 主机:远程连接ftp服务器,进行长传和下载文件,需要开启20,21端口

telnet 主机:远程连接服务器,服务器需要开启23端口

telnet IP 端口号  :测试远程主机端口号是否可用,端口号可用则显示黑屏,不显示任何信息,,口号不可用则显示链接失败的错误信息


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值