dos命令以及bat批处理学习

Windows批处理:

DOSDisk Operating System)是一个使用得十分广泛的磁盘操作系统,就连目前流行的Windows9x/ME系统都是以它为基础。他的每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。

内部命令,是指在DOS启动之后,自己主动通过command.com文件导入内存的命令。

在执行这些命令的时候,直接从内存进行调用………

1               dir--显示指定路径上全部文件或文件夹的信息
它的格式为"dir [盘符:][路径][文件名称] [參数]",比方"DIR E:\FF.M3U"

2               md(mkdir)--建立文件夹
它的格式为"md [盘符][路径]"。比如"MD TEMP"

3               rd(rmdir)--删除文件夹
格式为"RD [盘符][路径]"
注意:该命令仅仅能删除空文件夹。而且不能删除当前文件夹。

4               cd--进入指定文件夹
格式为" CD [路径]"。比如"CD HAPPY"
注意:仅仅能进入当前盘符中的文件夹。

当中"CD\"为回到根文件夹,"CD.."为回到上一层文件夹。

5               copy--复制文件
格式为"COPY [源文件夹或文件] [目的文件夹或文件]",比方"COPY C:\*.COM D:\" 
注意:使用该命令进行文件拷贝时,目的文件夹一定要存在。

6               del--删除文件
格式为"DEL [盘符][路径][文件名称] [參数]",比方"DEL C:\DATA\*.BAK"。它有一个參数:"/P"。能够使用户在删除多个文件时对每一个文件都显示删除询问

7               ren(rename)--改名
格式为"REN [原名] [现名]"7.0以后版本号的DOS都支持对文件名称和文件夹名的改动,而曾经的DOS仅仅能改动文件名称。

8               type--显示文本文件
格式为"TYPE [文件名称]",能对文本文件进行查看。

9)    discopy--磁盘复制

[功能复制出一个和原来磁盘内容一模一样的磁盘

[格式] diskcopy 源驱动器名 目的驱动器名

[说明它的主要用途就是用来备份。

    10)    deltree--删除文件夹树

[格式] [C:][path]DELTREE [C1:][path1] [[C2:][path2] […]]

[说明这个命令将整个指定文件夹树全部消灭,而无论它是否是仅仅读、隐藏与否。

11) mem--查看你的计算机内存有多少,以及内存的使用情况。

[格式] mem

    12) chkdsk--检查你的磁盘的使用情况。

[格式] chkdsk 磁盘名

[说明比如要检查A盘使用情况。就输入chkdsk A: ,检查c盘使用情况,就输入chkdsk C: 。假设直接输入chkdsk,就检查当前磁盘的使用情况。

    13) sys--传递系统文件命令。

DOS的两个隐含的系统IO.SYSMSDOS.SYS传送到目标磁盘的特定位置上,并将COMMAND.COM文件复制过去。完毕后。目标盘成为DOS的启动盘。

[格式] [C:][path]SYS [C1:][path] d2:

[说明因为这几个文件须要拷贝到特定位置上,所以用COPY命令完毕的复制未必能够启动机器。

能过SYS命令。DOS能够将目标盘已占领特定位置的文件移动。并将系统文件拷贝到对应位置上。

參数C1:path用来指明系统文件所在文件夹。如不指明,则缺省为当前盘的当前文件夹。所以这个命令一般要在源盘的根文件夹进行。

14) pass--设定DOS寻找.COM.EXE.BAT文件的所在文件夹

[格式] path=[[drive:]path[;…]]path

[说明仅仅打path没有參数时,仅仅显示环境变量内容。

有參数时,又一次设置path变量。在没有指定path环境变量时。用户发出的命令,DOS首先判断其是否为内部命令,再查找当前文件夹中是否有主文件名称是该命令的可执行文件。假设均不是,则显示信息“Bad command or filename”。假设发出了指定路径的命令,则在指定径中依次查找,仍找不到则出现上述提示。

    15) cls--清除显示器屏幕上的内容。使DOS提示符到屏幕左上角。

[格式] cls

16) time--显示和设置DOS的系统时间

[格式] time [hh[:mm[:ss[.cc]]]

17) date--显示和设置DOS的系统日期

[格式] date [MM-DD-YY]

18) ver--显示正在执行的DOS系统版本号号

 

FORMATFormat.COM--格式化命令
FORMAT命令能够完毕对软盘和硬盘的格式化操作

格式为"FORMAT [盘符] [參数]",比如:"FORMAT A: /S"

它有两个常见的參数:

/Q:进行高速格式化;
/S:完毕格式化,并将系统引导文件拷贝到该磁盘。

注意:该命令会清除目的磁盘上的全部数据,一定要小心使用。假设进行了普通的格式化。那磁盘上的数据还有可能恢复。但假设加上了"/Q"。那要恢复就比蹬天还难了。

convert转换磁盘格式:

convert f:/FS:NTFS    把F盘转换为NTFS格式。或者为fat32格式

 

 SCANDISKScandisk.EXE--磁盘扫描程序
这个命令在实际的操作中有非常大的用处,它能对磁盘进行扫描并修复,能够解决大部分的磁盘文件损坏问题。

格式为"SCANDISK [盘符:] [參数]"以下是它的几个參数:

/fragment [驱动器名:\路径\文件名称]:使用这个參数能够显示文件是否包括有间断的块,我们能够通过执行磁盘整理程序来解决这个问题;
/all:检查并修复全部的本地驱动器;
/autofix:自己主动修复错误。即在修复时不会出现提示;
/checkonly:仅仅检查磁盘。并不修复错误。
/custom:依据Scandisk.ini文件的内容来执行ScandiskScandisk.ini是一个文本文件,它包括了对Scandisk程序的设置。当中的[custom]块是在加上"/custom"參数后才执行的,用户能够依据自己的不同情况来进行不同的设置;
/nosave:在检查出有丢失簇后直接删除,并不转化为文件;
/nosummary:不显示检查概要,完毕检查后将直接退出程序;
/surface:在完毕初步检查后进行磁盘表面扫描;
/mono:以单色形式执行Scandisk

 

 

  MOVEMove.EXE--文件移动命令,使用它能够对文件进行移动。

格式为"MOVE [源文件] [目的路径]"

 

 

 

 

 

 

 

 

 

 

 

在bat命令执行后想不关闭窗口时可以在bat命令中启动另一个bat则另一个bat的窗口不会消失,例如在a.batz中添加start   b..bat,然后这个新的bat是不会自动关闭的,或者执行cmd.exe重新开启一个新的命令行窗口

 

bat命令中脚本:

ECHO命令是大家都熟悉的DOS批处理命令的一条子命令:

不加@时,
在运行时,会在窗口显示出这条命令而加了@, 只会显示出 echo后面你要显示出的东西。

例如:
echo abc
会显示:
echo abc
abc

而:
@echo abc
会显示:
abc

 

Pause命令会提示按任意键继续,当用户按任意键之后会继续执行后续操作

Call和start都是启动另一个bat文件,但是call是在本窗口继续执行另一个bat中的命令,start会启动一个新的窗口执行另一个bat的命令,执行完之后窗口不消失。Call abc.BAT  

set /p a=promptstring  命令详解:先显示promptstring,再接受用户输入的内容,以回车表示结束,赋值给变量a,另外%%是变量引用符,中间的值位变量

set/p a=请输入第一个参数并按回车:

 echo %a%

Title设置控制台BAT的标题

:goto

goto是个跳转命令,:是一个标签,当程序运行到goto时,将自动跳转到:定义的部分去执行了:

……

Goto   end

……

:end

 

If

输入判断: if %a%==””  goto  usage

存在判断:

if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif

 

管道命令 |、>、>>、>、>&、<&

|命令的作用,就是让前一命令的输出当做后一命令的输入:

>会清除掉原有文件中的内容后把新的内容写入原文件: echo @echo off > a.bat

>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容:

echo exit >> a.bat

组合命令:&、&&、||

&命令作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败:

copy a.txt b.txt /y & del a.txt

&&可以把它前后两个命令组合起来当一个命令来用,一旦发现有命令出错将不继续执行剩下的命

||命令执行正确就退出此命令组合,不再执行剩下的命令:

dir s*.exe || echo Didn't exist file s*.exe & pause & exit

 

;

分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。

dir c:\;d:\;e:\;z:\ > 1.txt

逗号相当于空格,在某些情况下“,”可以用来当做空格使用:

dir,C:\

“”

小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行。

(echo a && echo bb) > 1.txt

!在变量延迟问题中,用来表示变量,即%var%应该表示为!var!

Set /p input=请输入: & echo 你输入的是:!input!

f…else…条件语句

DOS条件语句主要有以下形式

if用于条件判断,适用于以下情形:

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

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

3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;

4、判断某个变量是否已经被赋值,用 if defined str 语句;

if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。

对于以上四种情形,可以分别使用如下代码:

 

1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)

2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)

3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)

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

判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。

判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:

中文含义 关系符 英文解释

等于   equ equal

大于   gtr greater than

大于或等于 geq greater than or equal

小于   lss less than

小于或等于 leq less than or equal

不等于   neq no equal

 

if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。

循环变量:

for /L %%变量 in (起始值,每次增值,结束时的比较值) do 命令

(上面L也可用小写,主要为了视觉上不与数字1混淆而没用小写)
(起始值,每次增值,结束时的比较值)相当于一个等差数字序列,从“起始值”的数字开始,每次增加多少(也可设定为负数)为“每次增值”,并与“结束时的比较值”比较,超出则退出for循环(也不执行本轮后面的do 命令)

@echo off

::在D盘建立aa1~ aa5五个文件夹

for /L %%i in (1,1,5) do md d:\aa %%i

pause

其中::为注释符,可以注释掉该行  md为创建文件夹 do后面的为方法体可以用()括起来,%%i为对循环值的引用

变量:(记住如果是在批处理中使用for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分大小写,FOR分四种参数 D L R F

for /d %%变量 in (集) do 命令
/d 参数是指定仅对目录而不是文件执行的for命令。

for /d %a in (c:\*.*) do echo %a
运行会把C盘根目录下的全部目录分次显示出来,而不显示文件名

参数/f将会打开(集)里的文件,使for命令能处理文本文件的读取和添加删除替换等编辑性的操作,可谓功能强大,因此也相对复杂一些。

/f 后可以带有几种选项,不带选项当然也是合格的格式,而带有参数则必须以引号整体括起来,后面的集里主要由三种形式形成的,最终在for循环中的每一轮中会形成读取一行字符串,来给指定的%变量、以及给由于选项中派生出附加变量赋值后,执行do后面的命令
下面以例子来具体说明和逐步理解各分项的用法
例6
假定d:\abc.txt内容如下:
姓名 性别 年龄 等-级
张三 男 36   A-1
李四 男 29   B-2
赵六 女 31   A-2


执行如下命令:
for /f %c in (d:\abc.txt) do @echo %c
则屏幕上显示:
姓名
张三
李四
赵六

这是for /r 在“%变量”前缺省参数选项时的情况,循环中每轮会默认以空格为分隔,在打开的文件中逐行给字符串分段,又因为没给增添附加变量(即仅一个变量%c)则仅把第一段的字符赋给%c,再执行 do后的命令,然后进行循环的下一轮,并且默认忽略空行

 

启动关闭外部程序:

start "QQ" "D:\Program Files\Tencent\QQIntl1.6\Bin\QQ.exe" 

启动QQ后面的第一个QQ为任意字符是代表控制台的名称后面代表exe启动路径

rem暂停几秒后继续运行  

ping/n 3 127.1>nul  

start "weibo" "D:\Program Files\Sina\Weibo2012\Bin\Weibo2012.exe"

 

taskkill /F /IM QQ.exe   杀死QQ进程

taskkill /F /FI "IMAGENAME eq *"   其中IMAGENAME代表程序的映像名称

·  例如:  

TASKKILL /S system /F /IM notepad.exe /T  

TASKKILL /PID 1230 /PID 1241 /PID 1253 /T  

TASKKILL /F /IM notepad.exe /IM mspaint.exe  

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 domain\username /FI "USERNAME ne NT*" /IM *  

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

 

杀死对应进程:

taskkill /pid pid 

 

taskkill /im xxx.exe 

 

taskkill /fi "imagename eq xxx.exe" 

 

taskkill /fi "pid eq pid" 

 

 

加减乘除的运算:

set /a 可计算+-*/(加减乘除

set /a d=(1=2)*3

@echo d=%d%

命令前面的@代表隐藏

 

执行命令 netstat -ano|findstr "端口值",比如 netstat -ano|findstr  "10000" 查看端口占用情况

猜你喜欢

转载自blog.csdn.net/zpflwy1314/article/details/104596623
今日推荐