[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理语法教程

学习批处理命令时,要经常查找系统帮助.在命令行下输入"command /?",则可显示相应的command帮助.

1.echo

echo命令有两个作用:

(1)将命令回显打开或关闭.

用法:ECHO [ON | OFF]

echo off 关闭回显;

(2)显示信息.

用法:ECHO [message]

如:echo zhangyang 显示"zhangyang"

2.pause

作用:暂停批处理程序,并显示以下消息:

请按任意键继续. . .

3.rem

作用:在批处理文件或 CONFIG.SYS 里加上注解或说明。

用法:REM [comment]

如:rem 这是自动产生QQ号码的批处理程序

和::功能相同,相当于C语言中的"//"

4.goto

作用:跳转命令,将 cmd.exe 导向到批处理程序中带标签的行。

用法:GOTO label

label:指定批处理程序中用作标签的文字字符串。

如:goto Produce 跳转到Produce标签处

5.call

作用:从批处理程序调用另一个批处理程序。

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

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

如:call clear.bat

6.start

作用:启动另一个窗口运行指定的程序或命令。

用法:START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]

[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]

[/WAIT] [/B] [command/program]

[parameters]

如:start cmd 打开另一命令行窗口

start 批处理教程.doc 打开批处理教程.doc文档

start www.baidu.com 打开百度主页

7.set

作用:显示、设置或删除 cmd.exe 环境变量。

用法:

SET [variable=[string]]

variable 指定环境变量名。

string 指定要指派给变量的一系列字符串。

(1)定义普通变量

如:set var=zhangyang

echo %var%

执行结果为:zhangyang

(2)SET /P variable=[promptString]

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入

行之前,显示指定的 promptString。promptString 可以是空的。

如:set /p var=请输入编号:

请输入编号:1000

执行echo %var%后,显示结果为:1000

(3) SET /A expression

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。

set /a var=1

set /a var+=2

执行echo %var%后,显示结果为:3

8.if

作用:执行批处理程序中的条件处理。

用法:

IF [NOT] ERRORLEVEL number command

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

(1)IF [NOT] ERRORLEVEL number command

通过判断上一条命令执行结果,来决定下一个步骤.

一般上一条命令的执行结果代码只有两结果,"成功"用0表示 "失败"用1

如:errorlevel.bat

@echo off

ping www.tom.com >ip.txt

if errorlevel 0 (echo ping succeed!) else (echo ping fail!)

pause

执行结果:ping succeed!

(2)IF [NOT] string1==string2 command

比较string1 和string2 是否相等,若相等,则

执行if后的命令,否则将不执行.

如:stringequal.bat

@echo off

if "zhangyang"=="zhang yang" (echo equal) else (echo nonequal)

pause

执行结果:nonequal

(3)IF [NOT] EXIST filename command

判断文件是否存在,若存在,则执行if后的命令,否则将不执行.

如:exist.bat

echo off

if exist qq.dic (

echo qq.dic exist

del qq.dic

) else (echo qq.dic doesn't exist)

pause

执行结果:qq.dic doesn't exist

9.for

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

用法:FOR %%variable IN (set) DO command

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

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

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

(1)for /D %%variable IN (set) DO command

如:for_D.bat

@echo off

for /d %%i in (D:\M*) do echo %%i

pause

说明:将D盘目录下以"M"开头的目录显示出来

执行结果:

D:\MASM

D:\Microsoft SQL Server 2000

D:\Microsoft Vistual Studio 6.0(English)

D:\MSDN for Visual Studio 6.0

请按任意键继续. . .

(2)FOR /R [[drive:]path] %%variable IN (set) DO command

检查以 [drive:]path 为根的目录树,指向每个目录中的

FOR 语句。如果在 /R 后没有指定目录,则使用当前

目录。如果集仅为一个单点(.)字符,则枚举该目录树。

如:for_R.bat

@echo off

for /r D:\ %%i in (D:\M*) do echo %%i

pause

执行结果:

G:\my.doc

G:\zy\yy\my.txt

G:\M01\MSWINSCK.OCX

请按任意键继续. . .

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

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

如:for_L.bat

@echo off

set sum=0

set /p var=请输入变量

for /l %%i in (1,1,%var%) do set /A sum+=%%i

echo 1到%var%的和为:%sum%

pause

执行结果:

请输入变量100

1到100的和为:5050

请按任意键继续. . .

(4)

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

eol=c - 指一个行注释字符的结尾(就一个)

skip=n - 指在文件开始时忽略的行数。

delims=xxx - 指分隔符集。这个替换了空格和跳格键的

默认分隔符集。

tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代

的 for 本身。这会导致额外变量名称的分配。m-n

格式为一个范围。通过 nth 符号指定 mth。如果

符号字符串中的最后一个字符星号,

那么额外的变量将在最后一个符号解析之后

分配并接受行的保留文本。

eol:注释行的字符

delims:分隔符集.默认为空格和跳格键

tokens:每行的第几列符号

如:ShowIP.bat

@echo off

for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i

echo %ip%

pause

执行结果:

192.168.1.190

请按任意键继续. . .

可以用Dos命令 reg.exe 来删除。举例如下:

假如我要清除WinRAR的历史记录,可以新建个批处理文件,

然后在里面加入如下文字:

reg delete HKEY_CURRENT_USER\Software\WinRAR\DialogEditHistory\ExtrPath /va /f

reg delete HKEY_CURRENT_USER\Software\WinRAR\DialogEditHistory\ArcName /va /f

reg delete HKEY_CURRENT_USER\Software\WinRAR\ArcHistory /va /f

其中/va参数是指删除该分支下的所有键值,/f参数是指不要跳出提示。

-------------------------------------------------------------------------------------

如果想删除整个分支,就不要加/va,

例如:reg delete HKEY_CURRENT_USER\Software\CrocWare

-------------------------------------------------------------------------------------

如果想删除某个键值,就用 reg delete (分支) /v (键值)

例如:

reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify /v PastIconsStream /f

-------------------------------------------------------------------------------------

要注意:

如果注册表中有空格,应用双引号括住注册表;

如果注册表中有%,就用%%来表示;

例如:要清除Alcohol 120%的历史记录,可以在批处理中加入如下命令:

reg delete "HKEY_CURRENT_USER\Software\Alcohol Soft\Alcohol 120%%\Basic" /v "Image File Path" /f

reg delete "HKEY_CURRENT_USER\Software\Alcohol Soft\Alcohol 120%%\MountedMRU" /f

VBS删除注册表键值的问题首先是WshShell对象。该对象可用来设置系统环境变量以及修改注册表的数据。要修改注册表的数据,需要使用WshShell对象的三种方法: RegDelete(删除注册表数据)、RegWrite(写入或新建注册表数据)和 RegRead(读取注册表数据)。

  通常我们只需要用到前两种方法,它们具体的使用方法如下:

  一、RegWrite(写入或新建注册表数据)

  * 新建子主键

  语法为:WshShell.RegWrite "子主键名\"

  例如,我们想新建一个子主键“HKEY_CURRENT_USER\MyReg”,可使用如下的语句:

  WshShell.RegWrite "HKCU\MyReg\"

  说明:子主键名必须以反斜线 (\) 结束,若不小心忘记输入了这个(\),则该方法返回的是键值,即表示你是想在  HKEY_CURRENT_USER\下建立了一个名叫MyReg的键值了。这一点一定要十分注意!

  注意引号里子主键的开头必须是下列根键名之一:

  HKEY_CURRENT_USER(可简写为HKCU)、HKEY_LOCAL_MACHINE (HKLM)、HKEY_CLASSES_ROOT(HKCR)、  HKEY_USERS和HKEY_CURRENT_CONFIG

  * 在子主键下建立新的键值(或改写已有的键值的数据)

  语法为:WshShell.RegWrite "

子主键名\键值名","键值的数据","键值的类型"

  例如我们想在子主键“HKEY_CURRENT_USER\MyReg” 下新建一个字符串键值KeyValue,设置键值的数据为“str”,可使用如下的语句:

  WshShell.RegWrite "HKCU\MyReg\KeyValue", "str"

  (注:键值为字符串值,可省去"键值类型"的声明)

  若所建的为二进制值或DWORD值,数据为“1”,则还必须声明键值的类型,如下:

  WshShell.RegWrite "HKCU\MyReg\KeyValue",1,"REG_BINARY"

  WshShell.RegWrite "HKCU\MyReg\KeyValue",1,"REG_DWORD"

  注意二进制值和DWORD值的数据不能加引号,而字符串值的数据则必须加引号。

  二、RegDelete(删除注册表数据)

  * 删除一个子主键

  语法为:WshShell.RegDelete "子主键名\"

  例如,我们想删除子主键“HKEY_CURRENT_USER\MyReg”,可使用如下的语句:

  WshShell.RegDelete "HKCU\MyReg\"

  * 删除子主键的某个键值

  语法为:WshShell.RegDelete "子主键名\键值名"

  例如,我们想删除子主键“HKEY_CURRENT_USER\MyReg” 的键值KeyValue,可使用如下的语句:

  WshShell.RegDelete "HKCU\MyReg\KeyValue"

  类似于RegWrite,有一个“\”号表示的是删除子主键,没有“\”则表示要删除的是子主键下的键值。

除了WshShell对象外,我们还必须了解一下WScirpt 对象。WScirpt对象即代表Scripting Engine,只要启动Engine就会自动产生此对象。WScript对象提供了创建和读取对象的方法。要使用WSH的其他对象(例如WshShell对象),就必须先用WScript对象的有关方法(CreateObject、GetObject)来创建和读取。

  创建对象的语法如下:

  WScript.CreateObject(strProgID)

  其中strProgID就是我们所要创建的对象的标识名。

  例如:我们要使用WshShell对象及其属性和方法,首先就要用WScript对象的方法CreateObject来创建一个WshShell对象,语句如下:

  Set WSHShell = WScript.CreateObject("WScript.Shell")

  举一个例子吧。大家都知道,如果你使用了“开始”菜单中的“运行”,Windows将在列表框里记录下你“作案” 的痕迹。其实这些数据是记录在注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\

  CurrentVersion\Explorer\RunMRU子键下,我们只要把这个子键删除,然后再重新建立,不就可以了吗?

  现在我们可以来编写一个脚本了。以VBS为例,我们可以用记事本新建一个文件,然后输入(其中“//”后的文字为注释,不必输入):

  //定义对象,要编辑注册表,我们需要使用WSHShell对象及其方法

  Dim WSHShell

  //对象的方法CreateObject来创建WSHShell对象

  Set WSHShell = WScript.CreateObject("WScript.Shell")

  //然后我们使用WSHShell

对象的方法RegDelete来删除 HKEY_CURRENT_USER\Software\Microsoft\

  Windows\CurrentVersion\Explorer\RunMRU子键

  WSHShell.RegDelete "HKCU\Software\Microsoft\

  Windows\CurrentVersion\Explorer\RunMRU\"

  //最后我们恢复该主键,并在该主键下恢复字符串值“MRUList”,设置其数据为空串

 WSHShell.RegWrite "HKCU\Software\Microsoft\

  Windows\CurrentVersion\Explorer\RunMRU\MRUList",""

  程序到此结束,我们把文件另存为CleanMRU.vbs就可以了。现在我们就可以使用Scripting Engine来执行这个程序了。假设我们刚才把这个文件保存在D:\TEMP里,我们就可以使用“开始”菜单的“运行”——Wcript.exe D:\TEMP\CleanMRU.vbs。重新启动,怎么样?“运行”里已经是空空如也了吧!

  如果我们这样费尽心思地编了程序,最后还是得靠手工来运行,那还不如每次直接用注册表编辑器来操作呢!其实我们完全可以让它在每次开机时自动加载。这么一说,大家肯定都知道了——我们可以使用注册表编辑器,在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\

  CurrentVersion\Run”子主键下建立一个字符串值 “CleanMRU”,设置其数据为"Wcript.exe D:\TEMP\CleanMRU.vbs"。嘿嘿,这样才算大功告成。以后你每次开机,Windows就会自动执行该脚本以清除 “运行”中的历史记录了

有关注删表函数

RegistryDelete()

功能删除Windows系统注册库中的一个键或键的某个值。

语法RegistryDelete ( key, valuename )

参数key:string类型,指定键名,将删除该键或删除该键的某个值valuename:string类型,指定要删除的值的名称。如果想删除键、键的值、以及其下的所有子键,那么将该参数指定为空字符串返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。

--------------------------------------------------------------------------------

RegistryGet()

功能从系统注册库中得到指定键的值。

语法RegistryGet ( key, valuename, valuetype, valuevariable )

参数key:string类型,指定键名valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("")valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法valuevariable:用于保存键值的变量,其数据类型应该与valuetype参数指定的类型相匹配返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。

用法valuetype的可能取值为:RegString!以空字符结束的字符串RegEx

pandString!以空字符结束的字符串,其中包括了对环境变量的非扩展应用RegBinary!二进制数据ReguLong!32位数据ReguLongBigEndian!32位大数据RegLink!Unicode符号链RegMultiString!动态字符串数组为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。

--------------------------------------------------------------------------------

RegistryKeys()

功能从系统注册库中得到指定键的有效子键。

语法RegistryKeys ( key, subkeys )

参数key:string类型,指定键名subkeys:字符串数组变量,用于保存各子键返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法在subkeys参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的子键个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有子键,但是,在具体得到子键之前,没有办法能够预先知道实际子键个数。为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。

--------------------------------------------------------------------------------

RegistrySet()

功能在系统注册库中设置或创建指定键。

语法RegistrySet ( key, valuename, valuetype, value )

参数key:string类型,指定键名valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("")。如果注册库中不存在指定值名,该函数将创建新的值名valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法value:要设置的值,其数据类型应该与valuetype参数指定的类型相匹配返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。用法valuetype的可能取值为:RegString!以空字符结束的字符串RegExpandString!以空字符结束的字符串,其中包括了对环境变量的非扩展应用RegBinary!二进制数据ReguLong!32位数据ReguLongBigEndian!32位大数据RegLink!Unicode符号链RegMultiString!动态字符串数组为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。

--------------------------------------------------------------------------------

RegistryValues()

功能得到与指定键相关的一组值名。该函数在Windows 3.1中无效。

语法RegistryValues ( key, valuename )

参数key:string类型,指定键名valuename:字符串数组变量,用于保存值名返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法在valuename 参数中可

以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的值名个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有值名,但是,在具体得到值名之前,没有办法能够预先知道实际值名个数。为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。

前排旁观,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

TOP

后面为何VBS乱入?

TOP

段落和缩进不够清楚。
建议 markdown 写笔记然后发布在支持 markdown 的网站/博客,这里粘贴副本或者链接。

TOP

回复 4# 523066680


    这种一看就是不知道从哪复制粘贴过来的。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本作者是新手,还望各位大神请教。    谢谢

TOP

返回列表