当前位置:文档之家› DOS和BAT

DOS和BAT

DOS和BAT
DOS和BAT

BAT命令大全

1 echo 和 @

@ #关闭单行回显

echo off #从下一行开始关闭回显

@echo off #从本行开始关闭回显。一般批处理第一行都是这个

echo on #从下一行开始打开回显

echo #显示当前是 echo off 状态还是 echo on 状态

echo. #输出一个”回车换行”,空白行

#(同echo, echo; echo+ echo[ echo] echo/ echo\)

2 errorlevel

echo %errorlevel%

每个命令运行结束,可以用这个命令行格式查看返回码

默认值为0,一般命令执行出错会设 errorlevel 为1

3 dir

dir #显示当前目录中的文件和子目录

dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d #显示 C 盘当前目录中的目录

dir c: /a:-d #显示 C 盘根目录中的文件

dir c:\ /b/p #/b只显示文件名,/p分页显示

dir *.exe /s #显示当前目录和子目录里所有的.exe文件

4 cd

cd\ #进入根目录

cd #显示当前目录

cd /d d:\sdk #可以同时更改盘符和目录

5 md

md d:\a\b\c #如果 d:\a 不存在,将会自动创建中级目录

#如果命令扩展名被停用,则需要键入mkdir \a\b\c。

6 rd

rd abc #删除当前目录里的 abc 子目录,要求为空目录

rd /s/q d:\temp #删除 d:\temp 文件夹及其子文件夹和文件,/q安静模式

7 del

del d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件

del /q/a/f d:\temp\*.*

删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

del /q/a/f/s d:\temp\*.*

删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren

ren d:\temp tmp #支持对文件夹的重命名

9 cls

清屏

10 type

显示文件内容

type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码type *.txt #显示当前目录里所有.txt文件的内容

11 copy

拷贝文件

copy c:\test.txt d:\test.bak

复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bak

copy con test.txt

从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件

con代表屏幕,prn代表打印机,nul代表空设备

copy 1.txt + 2.txt 3.txt

合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件

如果不指定 3.txt ,则保存到 1.txt

copy test.txt +

复制文件到自己,实际上是修改了文件日期

12 title

设置cmd窗口的标题

title 新标题 #可以看到cmd窗口的标题栏变了

13 ver

显示系统版本

14 label 和 vol

设置卷标

vol #显示卷标

label #显示卷标,同时提示输入新卷标

label c:system #设置C盘的卷标为 system

15 pause

暂停命令

16 rem 和 ::

注释命令

注释行不执行操作

17 date 和 time

日期和时间

date #显示当前日期,并提示输入新日期,按\"回车\"略过输入date/t #只显示当前日期,不提示输入新日期

time #显示当前时间,并提示输入新时间,按\"回车\"略过输入time/t #只显示当前时间,不提示输入新时间

18 goto 和 :

跳转命令

:label #行首为:表示该行是标签行,标签行不执行操作

goto label #跳转到指定的标签那一行

19 find (外部命令)

查找命令

find \"abc\" c:\test.txt

在 c:\test.txt 文件里查找含 abc 字符串的行

如果找不到,将设 errorlevel 返回码为1

find /i“abc” c:\test.txt

查找含 abc 的行,忽略大小写

find /c \"abc\" c:\test.txt

显示含 abc 的行的行数

20 more (外部命令)

逐屏显示

more c:\test.txt #逐屏显示 c:\test.txt 的文件内容

21 tree

显示目录结构

tree d:\ #显示D盘的文件目录结构

22 &

顺序执行多条命令,而不管命令是否执行成功

23 &&

顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

find \"ok\" c:\test.txt && echo 成功

如果找到了\"ok\"字样,就显示\"成功\",找不到就不显示

24 ||

顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

find \"ok\" c:\test.txt || echo 不成功

如果找不到\"ok\"字样,就显示\"不成功\",找到了就不显示

25 |

管道命令

dir *.* /s/a | find /c \".exe\"

管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令

该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数

type c:\test.txt|more

这个和 more c:\test.txt 的效果是一样的

26 > 和 >>

输出重定向命令

> 清除文件中原有的内容后再写入

>> 追加内容到文件末尾,而不会清除原有的内容

主要将本来显示在屏幕上的内容输出到指定文件中

指定文件如果不存在,则自动生成该文件

type c:\test.txt >prn

屏幕上不显示文件内容,转向输出到打印机

echo hello world>con

在屏幕上显示hello world,实际上所有输出都是默认 >con 的

copy c:\test.txt f: >nul

拷贝文件,并且不显示\"文件复制成功\"的提示信息,但如果f盘不存在,还是会显示出错信息

copy c:\test.txt f: >nul 2>nul

不显示”文件复制成功”的提示信息,并且f盘不存在的话,也不显示错误提示信息

echo ^^W ^> ^W>c:\test.txt

生成的文件内容为 ^W > W

^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号

27 <

从文件中获得输入信息,而不是从屏幕上

一般用于 date time label 等需要等待输入的命令

@echo off

echo 2005-05-01>temp.txt

date

del temp.txt

这样就可以不等待输入直接修改当前日期

28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*

命令行传递给批处理的参数

%0 批处理文件本身

%1 第一个参数

%9 第九个参数

%* 从第一个参数开始的所有参数

批参数(%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\"

批处理文件里,用这个格式把命令行参数输出到文件

29 if

判断命令

if \"%1\"==\"/a\" echo 第一个参数是/a

if /i \"%1\" equ \"/a\" echo 第一个参数是/a

/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?

if exist c:\test.bat echo 存在c:\test.bat文件

if not exist c:\windows (

echo 不存在c:\windows文件夹

)

if exist c:\test.bat (

echo 存在c:\test.bat

) else (

echo 不存在c:\test.bat

)

30 setlocal 和 endlocal

设置”命令扩展名”和”延缓环境变量扩充”

SETLOCAL ENABLEEXTENSIONS #启用\"命令扩展名\"

SETLOCAL DISABLEEXTENSIONS #停用\"命令扩展名\"

SETLOCAL ENABLEDELAYEDEXPANSION #启用\"延缓环境变量扩充\"

SETLOCAL DISABLEDELAYEDEXPANSION #停用\"延缓环境变量扩充\"

ENDLOCAL #恢复到使用SETLOCAL语句以前的状态

“命令扩展名”默认为启用

“延缓环境变量扩充”默认为停用

批处理结束系统会自动恢复默认值

可以修改注册表以禁用\"命令扩展名\",详见 cmd /? 。所以用到\"命令扩展名\"的程

序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确

保程序能在其它系统上正确运行

\"延缓环境变量扩充\"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程

31 set

设置变量

引用变量可在变量名前后加 % ,即 %变量名%

set #显示目前所有可用的变量,包括系统变量和自定义的变量

echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用

set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1 set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2 echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2

echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2

echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2

echo %p:~0,3% #显示前3个字符,即aa1

echo %p:~-2% #显示最后面的2个字符,即b2

echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b

echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2

echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2

echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2 set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2

set /a p=39 #设置p为数值型变量,值为39

set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3 set /a p=p/10 #用 /a 参数时,在 = 后面的变量可以不加%直接引用

set /a p=”1&0″#”与”运算,要加引号。其它支持的运算符参见set/?

set p= #取消p变量

set /p p=请输入

屏幕上显示”请输入”,并会将输入的字符串赋值给变量p

注意这条可以用来取代 choice 命令

注意变量在 if 和 for 的复合语句里是一次性全部替换的,如

@echo off

set p=aaa

if %p%==aaa (

echo %p%

set p=bbb

echo %p%

)

结果将显示

aaa

aaa

因为在读取 if 语句时已经将所有 %p% 替换为aaa

这里的\"替换\",在 /? 帮助里就是指\"扩充\"、\"环境变量扩充\"

可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

set p=aaa

if %p%==aaa (

echo %p%

set p=bbb

echo !p!

)

ENDLOCAL

结果将显示

aaa

bbb

还有几个动态变量,运行 set 看不到

%CD% #代表当前目录的字符串

%DATE% #当前日期

%TIME% #当前时间

%RANDOM% #随机整数,介于0~32767

%ERRORLEVEL% #当前 ERRORLEVEL 值

%CMDEXTVERSION% #当前命令处理器扩展名版本号

%CMDCMDLINE% #调用命令处理器的原始命令行

可以用echo命令查看每个变量值,如 echo %time%

注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到

32 start

批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令

33 call

批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行

有时有的应用程序用start调用出错的,也可以call调用

34 choice (外部命令)

选择命令

让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……

win98里是https://www.doczj.com/doc/658885968.html,

win2000pro里没有,可以从win98里拷过来

win2003里是choice.exe

choice /N /C y /T 5 /D y>nul

延时5秒

35 assoc 和 ftype

文件关联

assoc 设置'文件扩展名'关联,关联到'文件类型'

ftype 设置'文件类型'关联,关联到'执行程序和参数'

当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开

而是先判断.txt属于 txtfile '文件类型'

再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

可以在\"文件夹选项\"→\"文件类型\"里修改这2种关联

assoc #显示所有'文件扩展名'关联

assoc .txt #显示.txt代表的'文件类型',结果显示 .txt=txtfile

assoc .doc #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8 assoc .exe #显示.exe代表的'文件类型',结果显示 .exe=exefile

ftype #显示所有'文件类型'关联

ftype exefile #显示exefile类型关联的命令行,结果显示 exefile=\"%1\" %* assoc .txt=Word.Document.8

设置.txt为word类型的文档,可以看到.txt文件的图标都变了

assoc .txt=txtfile

恢复.txt的正确关联

ftype exefile=\"%1\" %*

恢复 exefile 的正确关联

如果该关联已经被破坏,可以运行 https://www.doczj.com/doc/658885968.html, ,再输入这条命令

36 pushd 和 popd

切换当前目录

@echo off

c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹

md d:\mp4 #在 D:\ 建立 mp4 文件夹

cd /d d:\mp4 #更改当前目录为 d:\mp4

pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3

popd #恢复当前目录为刚才保存的 d:\mp4

37 for

循环命令

这个比较复杂,请对照 for/? 来看

for %%i in (c: d: e: f:) do echo %%i

依次调用小括号里的每个字符串,执行 do 后面的命令

注意%%i,在批处理中 for 语句调用参数用2个%

默认的字符串分隔符是\"空格键\",\"Tab键\",\"回车键\"

for %%i in (*.txt) do find \"abc\" %%i

对当前目录里所有的txt文件执行 find 命令

for /r . %%i in (*.txt) do find \"abc\" %%i

在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行

for /r . %%i in (.) do echo %%~pni

显示当前目录名和所有子目录名,包括路径,不包括盘符

for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt

把 d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去

for /l %%i in (2,1,8) do echo %%i

生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1 for /f %%i in ('set') do echo %%i

对 set 命令的输出结果循环调用,每行一个

for /f \"eol=P\" %%i in ('set') do echo %%i

取 set 命令的输出结果,忽略以 P 开头的那几行

for /f %%i in (d:\mp3.txt) do echo %%i

显示 d:\mp3.txt 里的每个文件名,每行一个,不支持带空格的名称

for /f \"delims=\" %%i in (d:\mp3.txt) do echo %%i

显示 d:\mp3.txt 里的每个文件名,每行一个,支持带空格的名称

for /f \"skip=5 tokens=4\" %%a in ('dir') do echo %%a

对 dir 命令的结果,跳过前面5行,余下的每行取第4列

每列之间的分隔符为默认的\"空格\"

可以注意到 dir 命令输出的前5行是没有文件名的

for /f \"tokens=1,2,3 delims=- \" %%a in ('date /t') do (

echo %%a

echo %%b

echo %%c

)

对 date /t 的输出结果,每行取1、2、3列

第一列对应指定的 %%a ,后面的 %%b 和 %%c 是派生出来的,对应其它列分隔符指定为 - 和\"空格\",注意 delims=- 后面有个\"空格\"

其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的

for /f \"tokens=2* delims=- \" %%a in ('date /t') do echo %%b

取第2列给 %%a ,其后的列都给 %%b

32 subst (外部命令)

映射磁盘。

subst z: \server\d #这样输入z:就可以访问\server\d了

subst z: /d #取消该映射

subst #显示目前所有的映时

38 xcopy (外部命令)

文件拷贝

xcopy d:\mp3 e:\mp3 /s/e/i/y

复制 d:\mp3 文件夹、所有子文件夹和文件到 e:\ ,覆盖已有文件

加 /i 表示如果 e:\ 没有 mp3 文件夹就自动新建一个,否则会有询问

如何写BAT命令

计算机知识2009-01-29 15:32 阅读512 评论2 字号:大大中中小小这篇也是在别人的博客里借用过来与大家共享的。

如何创建批处理文件?

不要听了批处理文件就感到很神气,其实这东西很简单的.你用过记事本没有?用过?好的.将记事本打开,什么都不用写,然后选择文件,保存.保存类型选择所有文件,文件名则命名为*.bat这个*代表是文件名,你可以随便的起.保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标.这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.

批处理文件中的命令是什么?

批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释.批处理顾名思义就是一大堆东西堆在一起处理.换句话说就是往里面写一条条dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果.只不过用批处理写好之后,要运行只要双击下就可以运行了.而不用再一遍一遍的重复的往里面打命令.这就是批处理文件的好处.

除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且编写语言十分不规范.

批处理语法:

先讲个最基本的东西@echo off

echo的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echo off 这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。如果第一句用的是ECHO OFF,那么在执行完批处理文件以后不会显示命令提示符。

举个例子:如果我们先创建一个1.bat文件,往里面输入:

dir 然后保存在c:\下.然后我们运行cmd,进入c盘根目录下,输入1.bat,则显示:C:>dir

驱动器C 中的卷没有标签。

卷的序列号是0C5D-07FF

C: 的目录

2004-08-25 00:45

WINDOWS

2004-08-25 00:51

Documents and Settings

...........

C:

如果将1.bat内容修改成

echo off

dir

然后再在cmd里输入1.bat,则会显示

C:>echo off//因为运行了echo off,所以没有显示dir命令,直接显示了结果

驱动器C 中的卷没有标签。

卷的序列号是0C5D-07FF

C: 的目录

2004-08-25 00:45

WINDOWS

2004-08-25 00:51

Documents and Settings

.....

C:

如果将1.bat文件修改成:

@echo off

dir

则显示成:

C:>1.bat //与前面不同,并没有显示echo off,原因是加了@,所以不显示@后面的内容.又因为加

//了echo off,所以后面的命令不显示,直接显示结果

驱动器C 中的卷没有标签。

卷的序列号是0C5D-07FF

C: 的目录

2004-08-25 00:45

WINDOWS

2004-08-25 00:51

Documents and Settings

....

C:

通过以上的比较,相信你对echo off命令已经充分掌握了接下来讲的是call命令:

call是打电话的call,而不是"喔靠"的靠:).call的意思为调用.假如有2个批处理文件a.bat和b.bat.如果我想运行a.bat的当中运行b.bat.如何运行呢?其实很简单,只要在a.bat 文件中输入call命令,则可以在a.bat运行的当中,运行b.bat,等b.bat运行完之后,继续执行a.bat

call命令格式:

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

batch-parameters 指定批处理程序所需的命令行信息。

举例如下,我们在c盘根目录下创建a.bat文件,内容为:

echo this is a.bat

call d:b.bat

echo done

然后在d盘根目录下创建b.bat,内容为:

echo this is b.bat

保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:

C:>a.bat

C:>echo this is a.bat

this is a.bat

C:>call d:b.bat

C:>echo this is b.bat

this is b.bat

C:>echo done

done

由例子很容易看出来,是先运行a.bat的内容,直到遇到call b.bat后,则调用b.bat,运行完b.bat后,再返回a.bat接着运行call b.bat后面的echo done语句,直至将a.bat的所有批处理命令运行完.

注:里面有个[batch-parameters]里面的所指的参数是什么,知道的朋友能否告知,不胜感激.

PAUSE 命令

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。

rem命令:

表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释).

同时你可以用两个冒号来替代rem.如:::等同于一个rem.但他们有个区别,就是用::作注释的话他是不回显的,即使你打echo on强制回显也没有同的.同时rem可以在config.sys中加注释.

语法:rem[commnet]

批处理文件参数:

有点变成基础的人都知道函数有参数.批处理文件也有参数.

我打个比方,希望能帮助没有语言基础的人也能看的非常明白.

我从例子里开始吧.首先在c盘根目录下创建一个批处理文件a.bat,里面输入内容

echo %1

然后打开cmd,然后进入c盘根目录.输入:a "this is a canshu"

得到结果如下:

C:>a.bat "this is a test"

C:>echo "this is a test"

"this is a test"

输入的a "this is a canshu"中,a为新建的a.bat的文件名a(后面的.bat可写也可不写),而a后面的"this is a canshu"这句话就是参数,写在这的参数,在程序运行中就将参数自动放到批处理程序中去.那么放在什么位置呢?就是放在%1的地方.

看了例子,让我们看看整个关于参数的定义如何:

批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。//我们上个程序的例子里就有%1,他就是参数,而输入中"this is a test"作为参数就直接放到%1的位置,于是程序就变成了echo "this is a test".

再举几个例子帮助你理解:

C:根目录下一批处理文件名为b.bat,内容为:

@echo off

type %1 //type为dos中的输出命令,可以用来输出文本文件的内容,比如我们新建一个1.txt文件

//里面输入内容,保存.进cmd,如果输入1.txt则看不了1.txt文件内容,但是如果我

//想看怎么办呢?这时候可以用type命令,只要在cmd里输入type 1.txt就能显示

//1.txt文件中的内容了

type %2

那么运行C:>b a.txt b.txt

%1 : 表示a.txt

%2 : 表示b.txt

于是上面的批处理命令就变成了

@echo off

type a.txt

type b.txt

于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

没有编程基础的人可能要问,干什么要弄个参数啊?在后面加个参数多麻烦啊?直接往里面写不就好了啊?!其实这样想有对的方面也有错的方面.还是举个例子说明吧.

第一步还是在c盘根目录下新建一个批处理文件,我们取名仍为a.bat.往里面的内容输入为:

ping %1//ping命令可以简单理解为测试一台机器开着还是没有开,如果开着的话,他就回给你回送回应.

然后进cmd,我们想测试下163的服务器是不是开着,则输入a https://www.doczj.com/doc/658885968.html,

对于知道ping命令的人,可以打ping进行检查,但如果想ping的人不知道ping命令怎么用,那怎么办啊?这时候你就可以把命令预先输入到批处理文件中,保存好,然后让不

会用的人进cmd,运行你的批处理文件,文件名后面加上他要ping的网站地址就行了.换句话说,他想ping163就直接加163的网址,想ping sina就直接加sina的网址.这样只要输入一个参数,而不用改程序本身,整个程序的通用性就大大提高了.

这是对于一个简单的ping命令,你或许觉得用参数不值得,还是直接改不就好了啊.但如果程序有很多条,你一下找不到在哪改怎么办啊?所以,不管你是菜哥,菜弟,菜姐,菜妹,只要运行下,输入参数,结果自己就会出来,不用再象你一样,考虑怎么编写批处理文件.人家只要知道是输入什么东西能让批处理程序运行,而编写的人则想的是如何让不懂程序的人能运行程序.

批处理参数就这么简单,不知道你理解了没有?但如果你想深一步了解批处理参数,可以接着往下看,如果不想深入了解,知道现在这么多也就够了.

====================================

因为参数只有1%-9%,但当我们要引用第十个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下:

初始状态, cmd 为命令名, 可以用%0 引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过1次shift后, cmd 将无法被引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

遗憾的是, win9x 和DOS下均不支持shift 的逆操作. 只有在nt 内核命令行环境下, shift 才支持/n 参数, 可以以第一参数为基准返复移动起始指针.

=================

if goto choice for高级语法

if命令

说得通俗点,if就相当于我们白话里的如果.

举个例子:如果a喜欢b,那么a就要娶b.这句话翻译成计算机语言就成了

if a喜欢b a就要娶b.

当然拉,计算机不可能理解a喜欢b,a就要娶b这两句话,这里只是举个例子让你方便理解.

if语句一共有3种模式,如下:

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

IF [NOT] ERRORLEVEL number command

NOT 指定只有条件为false 的情况下,Windows XP 才应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为true。

string1==string2 如果指定的文字字符串匹配,指定条件为true。

EXIST filename 如果指定的文件名存在,指定条件为true。

command 如果符合条件,指定要执行的命令。如果指定的条件为FALSE,命令后可跟一个执行ELSE关键字后的命令的ELSE 命令。

我们先讲解第一种:

IF [NOT] string1==string2 command

自然语句意思:如果string1==string2,那么执行command

下面再举个能实际应用的if语句.

自然语句:如果输入的参数为3,那么显示"a=3"

计算机语句:

@echo off

if "%1"=="3" echo "a=3"

或者写成

@echo off

if %1==3 echo "a=3"

注意:当要测试的时候,因在cmd底下,输入1.bat 3.因为这里用了是传递参数,具体看文章前部分"批处理文件参数".

第二种:

IF [NOT] EXIST filename command

这条命令用语检测文件是否存在.如果存在,执行command.如果不存在,则什么也不显示.

如:我们想检查e盘根目录下是否有一个叫2.txt的文件.如果存在,则显示exist.如果不存在,则什么也不显示.

批处理命令如下:

@echo off

if exist e:2.txt echo "exist 2.txt"

第三种:

IF [NOT] ERRORLEVEL number command

这个我引用点资料,感觉别人写得更详细,引用部分为粉色字部分:

if errorlevel <数字> 待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。

如if errorlevel 2 goto x2

==== 注===========

返回值从大到小的顺序排列不是必须的, 而只是执行命令为goto 时的习惯用法, 当使用set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:

if errorlevel 1 set el=1

if errorlevel 2 set el=2

if errorlevel 3 set el=3

if errorlevel 4 set el=4

if errorlevel 5 set el=5

...

当然, 也可以使用以下循环来替代, 原理是一致的:

for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e //此处为一个for循环,后面会继续介绍到的,看不懂可以先跳过去

if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于set命令的"重复" 赋值特性, 由大到小排序会导致较小的返回码"覆盖" 较大的返回码.

另外, 虽然if errorlevel=<数字> command 也是有效的命令行, 但也只是https://www.doczj.com/doc/658885968.html, 解释命令行时将= 作为命令行切分符而忽略掉罢了

choice命令

????

goto命令

for命令

for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.

语法:

FOR %variable IN (set) DO command [command-parameters]

%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理文件中使用FOR 命令时,指定变量请使用%%variable

而不要用%variable。变量名称是区分大小写的,所以%i 不同于%I.

不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是type*.bat*.txt.先将该文件保存在c盘根目录下,名称为a.bat

用for命令如下:

for %%t in (*.bat *.txt) do type %%t

%%t其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%%t就变成了*.bat *.txt了.do就是做的意思,执行type命令,而type后面是%%t,而%%t又是*.bat *.txt.所以原来这句命令的意思就变成了:

type *.bat *.txt

执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat 和.txt的文件内容了.

这里要注意:in后面有个空格.

在xp底下,for命令扩展名被起用因此for的功能变得更加强大.下面讲一个真正的循环.

FOR /L %variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。

因此,(1,1,5) 将产生序列1 2 3 4 5,(5,-1,1) 将产生

序列(5 4 3 2 1)

里面第一个1在start的位置,意思是起始位置,第2个1在step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5在end的位置,意思是结束时的大小.

这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止.

这个有什么用呢?其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显"i am the best"这句话,重复显示10遍.那么for命令如下:

for /L %%e in (1,1,10) do echo "i am the best"

这时,cmd就会重复输入"i am the best"10遍.

===============================================

看完整篇文章了吗?咳...我写的不容易啊....

现在不知道你对bat有了什么样的理解,我现在的感觉就是bat就是dos命令的组合,你把dos命令全写进bat命令,只要运行下bat就会挨个执行dos命令,这无疑提供了不少的方便。

下面我再举些实例.

删除默认共享:

对于默认共享不知道你了解多少,反正留着是个隐患,现在唯一的办法好象只能做个bat文件进行删除.命令如下:

net share ipc$ /delete

net share admin$ /delete

十分经典的excel批处理教程

十分经典的批处理教程 这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。. 先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个"比较合适的",而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而"无条件爱上批处理",那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的! 按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。 OK,never claver and get to business(闲话少说言归正传)。批处理,也称为批处理脚本,英文译为BA TCH,批处理文件后缀BA T就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!)。再说句"闲话":要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面。 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): ping https://www.doczj.com/doc/658885968.html, > a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt exit 是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离"从服务器中转"那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。 例二、再给出一个已经过时的例子(a.bat):

简单的bat程序

第一篇: 答题程序 @echo off Title 输入密匙 :a set/p pz=请输入产品密匙继续: if %pz% equ qingxin=goto 0 echo 输入错误,请按任意键重新输入。。。。 pause>nul cls goto a :0 cls Title 繁星答题 echo Loading.... ping -n 1 127.1>nul color 01 ping -n 1 127.1>nul color 02 ping -n 1 127.1>nul color 03 ping -n 1 127.1>nul color 04 ping -n 1 127.1>nul color 05 ping -n 1 127.1>nul color 06 ping -n 1 127.1>nul color 07 ping -n 1 127.1>nul color 98 cls for /l %%i in (1 1 12) do echo. echo 本作品由“清新”制作! ping -n 3 127.1>nul cls

color 3e echo 欢迎使用由“清新”提供的答题软件! ping -n 2 127.1>nul echo 操作说明:输入答案后,按回车键! ping -n 2 127.1>nul echo 道具说明:1查资料2得到错误答案信息3电脑分析;任何选择时候输入数字代号,按回车键即可!(可以无限次使用) echo 开始答题请按任意键。。。 pause>nul cls :1 echo 第一题(答对你将获得五百元!) echo 王羲之是什么时代的人?A东晋B西汉C东汉D西晋 ping -n 2 127.1>nul set /p pa=请选择: if %pa% equ 1==start https://www.doczj.com/doc/658885968.html, & goto 1 if %pa% equ 2==(echo C和D错的) & ping -n 3 127.1>nul && goto 1 if %pa% equ 3==echo A55 B39 C0 D6 & goto 1 if %pa% equ a==msg %username% 恭喜你,答对了,你获得五百元,继续答对奖金升为一千。& goto 2 if %pa% equ A==msg %username% 恭喜你,答对了,你获得五百元,继续答对奖金升为一千。& goto 2 msg %username% 答错了!答案是A啦! exit :2 echo 继续? echo 你选择走还是不走:4不走奖金升高,但答错就空手而归! 5走你将获得现金!ping -n 2 127.1>nul set/p var=请选择: if %var% equ 4==goto 2.5 if %var% equ 5==(echo 你获得了¥500>奖金.txt) & exit echo 输入错误,按任意键重新输入...... pause>nul goto 2 :2.5 cls goto 3 :3 echo 电脑程序cmd在最初叫什么?A叫windows B叫C叫command D叫winxp ping -n 2 127.1>nul set /p pass= 请选择: if %pass% equ 1==start https://www.doczj.com/doc/658885968.html, & goto 3 if %pass% equ 2==(echo A和B错的) & ping -n 1 127.1>nul && goto 3 if %pass% equ 3==echo A0 B0.1 C99.9 D0 & goto 3

实用批处理(bat)教程

目录 第一章批处理基础 第一节常用批处理内部命令简介 1、REM 和:: 2、ECHO 和@ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和: 9、FIND 10、START 11、assoc 和ftype 12、pushd 和popd 13、CALL 14、shift 15、IF 16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节常用特殊符号 1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章FOR命令详解 一、基本格式 二、参数/d仅为目录 三、参数/R递归(文件名) 四、参数/L迭代数值范围 五、参数/F迭代及文件解析 第三章FOR命令中的变量

一、~I- 删除任何引号(\"),扩展%I 二、%~fI- 将%I 扩展到一个完全合格的路径名 三、%~dI- 仅将%I 扩展到一个驱动器号 四、%~pI- 仅将%I 扩展到一个路径 五、%~nI- 仅将%I 扩展到一个文件名 六、%~xI- 仅将%I 扩展到一个文件扩展名 七、%~sI- 扩展的路径只含有短名 八、%~aI- 将%I 扩展到文件的文件属性 九、%~tI- 将%I 扩展到文件的日期/时间 十、%~zI- 将%I 扩展到文件的大小 十一、%~$PATH:I 第四章批处理中的变量 一、系统变量 二、自定义变量 第五章set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 第七章DOS编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时 2、利用for命令延时 3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内 4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内 十、模拟进度条 十一、特殊字符的输入及应用 十二、随机数(%random%)的应用技巧 十三、变量嵌套与命令嵌套 1、更正了所有的错别字,适当排版,增加条理性。

非常实用的BAT程序

* bat文件设置成开机启动。不放开始菜单的启动里。 开始-运行-输入“regedit”(不包括引号)-找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Run项目,在其右侧窗口右击,选择新建字符串值,双击新建字符串值,在数值数据中输入你需要启动的程序路径,注意在整个路径上加上引号,即是: “X:\Rising\AntiSpyware\rstray.exe” * 启动BAT来运行本文件夹中的"ABC.exe",等ABC.exe运行完毕后就将其删除 请问该怎么写? @echo off start /w ABC.exe del ABC.exe echo. echo 删除成功成功,请按任意键退出! pause>nul 将保存的BAT放在与ABC.exe同一个文件夹下执行即可。 *

自动关机 shutdown –s –t 30 –c 爱上对方 -f:强行关闭应用程序 -m:\\计算机名:控制远程计算机 -i:显示图形用户界面,但必须是Shutdown的第一个选项 -l:注销当前用户 -r:关机并重启 -t:时间:设置关机倒计时 -c:“消息内容”:输入关机对话框中的消息内容(不能超127个字符) 定时关机 at 20:08 /interactive shutdown –s 输入CMD 再输入AT 可以查看当前关机任务 要取消输入SHUTDOWN –A 未能执行请查看TASK SCHEDULER服务是否启动 *怎么把一个自动关机的bat 和音乐文件捆绑只看得见音频文件双击就运行dos 自动关机 @echo off start a.mp3 rem 可改为决定路径路径,如E:\a.mp3 shutdown.exe -s -t 100 rem -s 关机-r 重启-t 时间毫秒 *

bat命令大全 清理系统垃圾更简单

1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4.Rem 命令 注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。 Rem Message Sample:@Rem Here is the description. 5.Pause 命令 运行Pause 命令时,将显示下面的消息: Press any key to continue . . . Sample: @echo off

windows批处理文件(.bat&)

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 语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所 在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个

非常经典BAT知识教程

手把手教你写批处理(willsort题注版) Climbing兄可谓用心良苦,受其感昭,略紧微薄之力;原文内容一字未易,仅于每段之下另加题注,其文大多非为纠错,多是年来体会,或偶得,或渐悟,未免偏颇;又加近来俗事渐多,闲情愈少,心浮气燥,一蹴而就。义理悖逆,敬请斧正;措辞不当,尚请莫怪。 另,建议Climbing兄取文不用拘泥于国内,此类技术文章,内外水平相差极大;与其修正国内只言片语,不如翻译国外优秀著述。 -------------------------------------------------------- 标题:手把手教你写批处理-批处理的介绍 作者:佚名 编者:Climbing 出处:中国DOS联盟之联合DOS论坛 题注:willsort 日期:2004-09-21 -------------------------------------------------------- 批处理的介绍 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 ====willsort编注===================================================== .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch,unix shell,awk, basic,perl等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。====================================================================== == 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ====willsort题注==================================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越“边缘化”。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ====================================================================== ==

如何编写bat文件

如何编写bat文件 第一节:(主要是一些界面形式功能的实现以及初始化) 1.“@echo off”--我们所写的BAT一开始一般都有这一句,这一句的作用是:使所有的命令响应隐藏。“@”--本行命令不回显 。(本来如果你用echo off就可以了,但是还是能够看到echo off这条命令在CMD下, 影响美观) 2.“color 1e”--设置默认的控制台前景和背景颜色。当前我设为蓝底黄字,具体颜色请在CMD下用“color /?”查询。 --这里又提到了这个参数“/?”,一般CMD下命令后加“/?”就会显示这条命令的帮助。 3.“rem”--注释作用,批处理执行过程中前不执行它,rem 后的字符只作注释作用。 4.“title”--设置命令提示窗口的窗口标题。默认为“cmd”。改成自己喜欢的多有个性,嘿嘿。 5.“cls”--不多说,清屏命令。主要是怕前面的一些空白或字符出现影响美观。 6.“set”--这个命令的作用很大,请用“set /?”查询具体使用方法。本例“settopip=172.16.”是 将一个名为“topip”的变量值设为“172.16.”。注意CMD下变量的设置不区别数字与字符, 能够自动根据提供的值调整。下行“settheip=0.0”同理。 7.“echo .”--在新行中显示一个“.”。echo命令能显示其后的comment。这里提几个有趣实用的用法--“echo.”,注意与前面的不同,“echo”与“.”间无空格。这条命令如同一个回车,在 新行不显示任何信息并换行。“echo ”,实现响铃的提示音。后面一个字符的输入方法是 在CMD下用“ctrl+G”,而这个字符得到的方法是CMD下用命令“echo "ctrl+G" >ex.txt”, 存入ex.txt文件,再从那里提取出来的。嘿嘿,如果你懒得做,就copy我在上面提供的 字符喽。 8.“if”--这条命令也会经常用到,请用“if /?”学习更多信息。本例“if not exist scanipc.exe (echo 文件错误!……)”,实现功能:当同级目录下不存在“scanipc.exe”时,提示“文件错误!……”。否则不提示。“if not exist filename”在批处理中使用比较多些。 9.“:top”,设置一个标志点,标志名为“top”。“:”的作用就是设置标志。网上有文章说“使用"::comment"作为注释比"rem comment"执行效率更高。”我相信,这里也建议大家,如果BAT中注释较多时,请使用“::comment”设置。 10.“set /p pno=”--设置一个变量,并接受用户输入。BAT不需要预先声明变量,只在需要 时设置。参数“/p”:将变量数值设成用户输入的一行输入。 11.“if %pno% gtr 9 gotoonerrorspno”--检验用户输入值是否大于9,是,则转到一个指定标 志点。这里注意BAT中变量引用时要在前后加“%”,但在if语句中可有可无,具体应用 大家多写几遍就有体会。 12.“goto label”--无条件跳转到指定标志位并向后执行。BAT好像只有这么一个跳转语句了,作用不用我说,用了就知道。注意不要构成死循环。

【最全最详细】批处理经典入门教程

批处理经典入门教程!(从不懂到高手) 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): 代码如下: ping https://www.doczj.com/doc/658885968.html, > a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt ping https://www.doczj.com/doc/658885968.html, >> a.txt exit 是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离“从服务器中转”那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt 文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。 例二、再给出一个已经过时的例子(a.bat): @echo off if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif a.bat 为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为a.bat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告图片(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。 例三,使用批处理脚本查是否中冰河。脚本内容如下: 复制代码代码如下: @echo off

bat基本应用

.bat文件的基本应用 bat是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语言程序。因为批处理文件本身既具有文本的可读性,又具有程 序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或 者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。 ==== 注 ===== 纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),https://www.doczj.com/doc/658885968.html,中的内部命令(根据内存的环境随时进驻 内存),以com为扩展名的可执行程序(由https://www.doczj.com/doc/658885968.html, 直接载入内存),以exe位扩展名的 可执行程序(由https://www.doczj.com/doc/658885968.html, 重定位后载入内存),以bat位扩展名的批处理程序(由https://www.doczj.com/doc/658885968.html, 解释分析,根据其内容按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不载入内存) ============ 第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批 处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文

bat文件的基本应用

bat文件的基本应用 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语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后

目前为止最全的批处理教程

目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与 变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节 常用特殊符号

1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章 FOR命令详解 一、基本格式 二、参数 /d仅为目录 三、参数 /R递归(文件名) 四、参数 /L迭代数值范围 五、参数 /F迭代及文件解析 第三章 FOR命令中的变量

一、 ~I- 删除任何引号(\"),扩展 %I 二、 %~fI- 将 %I 扩展到一个完全合格的路径名 三、 %~dI- 仅将 %I 扩展到一个驱动器号 四、 %~pI- 仅将 %I 扩展到一个路径 五、 %~nI- 仅将 %I 扩展到一个文件名 六、 %~xI- 仅将 %I 扩展到一个文件扩展名 七、 %~sI- 扩展的路径只含有短名 八、 %~aI- 将 %I 扩展到文件的文件属性 九、 %~tI- 将 %I 扩展到文件的日期/时间 十、 %~zI- 将 %I 扩展到文件的大小 十一、 %~$PATH:I 第四章 批处理中的变量 一、系统变量 二、自定义变量 第五章 set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command

批处理命令大全(合集命令)

1 echo 和@ 回显控制命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显。一般批处理第一行都是这个 echo on #从下一行开始打开回显 echo #显示当前是echo off 状态还是echo on 状态 echo. #输出一个"回车换行",一般就是指空白行 echo hello world #输出hello world "关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果 批处理开始和结束时,系统都会自动打开回显 2 errorlevel 程序返回码 echo %errorlevel% 每个命令运行结束,可以用这个命令行格式查看返回码 用于判断刚才的命令是否执行成功 默认值为0,一般命令执行出错会设errorlevel 为1 3 dir 显示目录中的文件和子目录列表 dir #显示当前目录中的文件和子目录 dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件 dir c: /a:d #显示C 盘当前目录中的目录 dir c:\ /a:-d #显示C 盘根目录中的文件 dir d:\mp3 /b/p #逐屏显示d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s 显示当前目录和子目录里所有的.exe文件 其中* 是通配符,代表所有的文件名,还一个通配符? 代表一个任意字母或汉字 如c*.* 代表以 c 开头的所有文件 ?.exe 代表所有文件名是一个字母的.exe文件 如果指定的目录或文件不存在,将返回errorlevel 为1 每个文件夹的dir 输出都会有2个子目录. 和.. . 代表当前目录 .. 代表当前目录的上级目录 dir . #显示当前目录中的文件和子目录 dir .. #显示当前目录的上级目录中的文件和子目录 其它参数可参考dir /? 4 cd 更改当前目录 cd mp3 #进入当前目录中的mp3 目录 cd .. #进入当前目录中的上级目录 cd\ #进入根目录

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册 一、批处理文件简介 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句 (for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的 DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch 目录(例如C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。 简单的说,批处理的作用就是自动的连续执行多条命令。 二、批处理中常用命令: 1.echo命令:表示显示此命令后的字符。字符不需要使用引号。其中,%和^两个字 符不能显示。 2.Echo off命令:表示在此语句后所有运行的命令都不显示命令行本身。即关闭echo 回显功能。可以使用echo on打开。 3.@命令:它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能 影响当前行)。 4.call命令:调用另一个批处理文件(如果不用call而直接调用别的批处理文件, 那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 5.pause命令:运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续。如果不想显示以上英文提示信息, 可以这样写:pause>null 6.rem命令:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考 用的(相当于程序中的注释)。 7.::命令:与rem命令等效。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:/a.bat,执行该批处理 文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: @echo off //不显示后续命令行及当前命令行

BAT批处理文件

常用: 1.自动打开光驱 Mshta javascipt:new ActiveXObject('WMPlayer.OCX').cdromCollection.Item(0).Eject();window.close;" 2.关机命令 @echo off Setlocal Cd/d%temp% Echo set colOperatingSystems = GetObject("winmgmts:{(shutdown)}").ExceQuery("select * From Win32_OperatingSystem")>shutdown.vbs Echo for each objOperatingSystem in colOperatingsystems>>shutdown.vbs Echo ObjPeratingSystem.Win32Shutdown(12)>>shutdown.vbs Echo next>>shutdown.vbs Cscript.shutdown.vbs Del.shutdown.vbs :::;Value meaning 0 log off 0 +4 forced log off 1 shutdown 1+4 forced shutdown 2 reboot 2+4 forced reboot 8 power off 8+4 forced power off Pause 3.列举进程 @echo for each ps in getobject_>ps.vbs @echo ("winmgmts:\\.\root\cimv2.win32_process").instance_>>ps.vbs @echo wscript.echo ps.handle^&vbtab^&https://www.doczj.com/doc/658885968.html,^&vbtab^&ps.executablepath:next>>ps.vbs Csript//nologo ps.vbs &del ps.vbs Pause 4.查看电脑信息 Start C:\WINDOWS\PCHealth\HelpCtr\System\sysinfo\sysComponentInfo.htm 5.显示隐藏文件(有些毒会阻止打开隐藏的文件,用这个,一定能看到) Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"/v Hidden/t reg_dword/d 1/f Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"/v HideFileExt /reg_dword/d 0/f Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"/v ShowSuperHidden/t reg_dword/d 1/f

bat脚本学习教程(珍藏版)

Bat脚本基础教程 TYPE显示文本文件的内容。 [drive:][path]filename SETLOCAL开始批处理文件中环境改动的本地化操作。 在执行SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个 尚未执行的SETLOCAL 命令,都会有一个隐含的ENDLOCAL 被执行。 SETLOCAL 如果命令扩展名被启用,SETLOCAL 会如下改变: SETLOCAL 批命令现在可以接受可选参数: ENABLEEXTENSIONS / DISABLEEXTENSIONS 启动或停用命令处理器扩展名。详细信息,请参阅CMD /?。 ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。详细信息,请 参阅SET /? 。 无论在SETLOCAL 命令之前它们的设置是什么,这些修改会一直 保留到匹配的ENDLOCAL 命令。 如果有一个参数,SETLOCAL 命令将设置ERRORLEVEL 的值。 如果有两个有效参数中的一个,该值则为零。用下列技巧,您 可以在批脚本中使用这个来决定扩展名是否可用: VERIFY OTHER 2>nul SETLOCAL ENABLEEXTENSIONS IF ERRORLEVEL 1 echo Unable to enable extensions 这个方法之所以有效,是因为在CMD.EXE 的旧版本上,SETLOCAL 不设置ERRORLEVEL 值。具有不正确参数的VERIFY 命令将 ERRORLEVEL 值初始化成非零值。 POPD命令选项到保存在PUSHD 命令里的目录。 如果命令扩展名被启用,从推目录堆栈POPD 驱动器时,POPD 命令会删除PUSHD 创建的临时驱动器号。 PUSHD保存当前目录以供POPD 命令使用,然后改到指定的目录。 PUSHD [path | ..] path 指定要成为当前目录的目录。 如果命令扩展名被启用,除了一般驱动器号和路径,PUSHD 命令还接受网络路径。如果指定了网络路径,PUSHD 将创建一个

文本预览
相关文档 最新文档