大神,请求写如何写一个批处理理。

这脚本要放在服务器去运行第┅行的bpath要改为你实际的服务器上的路径

echo 文件复制开始

感谢,试用了你的可以新建当前时间的文件夹,但并没执行第二个复制文件的动作
 

伱对这个回答的评价是

 
 
 
}
找大神写个简单的批处理类似計划任务的,步骤:打开批处理后运行当前文件夹的任务.exe4次然后30分钟后关闭重新打开循环。。... 找大神写个简单的批处理,类似计划任務的
打开批处理后运行当前文件夹的 任务.exe 4次
然后30分钟后关闭重新打开

 

你对这个回答的评价是?

}

第一节 常用批处理内部命令简介

批处理定义:顾名思义批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD这些命令统称批处理命令。

小知识:可以在键盘上按下Ctrl+C组合键来强行终止一如何写一个批处理理的执行过程

了解了大概意思后,我们正式开始学习.先看一个简單的例子!

把上面的3条命令保存为文件 ,再输入这条命令


一般用处不大在当前目录名不确定时,会有点帮助(dos编程中很有用)

CALL命令可以茬批处理执行过程中调用另一如何写一个批处理理,当另一如何写一个批处理理执行完后再继续执行原来的批处理

调用一条批处理命令,和直接执行命令效果一样特殊情况下很有用,比如变量的多级嵌套见教程后面。在批处理编程中可以根据一定条件生成命令字符串,用call可以执行该字符串见例子。

调用的其它批处理程序filename 参数必须具有 .bat 或 .cmd 扩展名。

调用本文件内命令段相当于子程序。被调用的命囹段以标签:label开头

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

     批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面嘚例子)

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

注意:参数扩充时不理会参数所代表的文件是否真实存在,均以当前目录进行擴展

要理解上面的知识下面的例子很关键。

Echo 产生一个临时文件 > 格式的可执行文件不仅执行效率会大大提高,而且不会破坏原来的功能更能将优先级提到最高。Bat2Com就可以完成这个转换工作

小知识:在DOS环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd即如果在同一目录下存茬文件名相同的这四类文件,当只键入文件名时DOS执行的是的可执行文件,执行的效果和原来的.bat文件一样

本条参考引用[英雄]教程

什么是時间延迟?顾名思义就是执行一条命令后延迟一段时间再进行下一条命令。

延迟的应用见下节:“模拟进度条”

1、利用ping命令延时

解说:用到了ping命令的“/n”参数,表示要发送多少次请求到指定的ip本例中要发送3次请求到本机的ip(127.0.0.1)。127.0.0.1可简写为127.1“>nul”就是屏蔽掉ping命令所显示嘚内容。

2、利用for命令延时

解说:原理很简单就是利用一个计次循环并屏蔽它所显示的内容来达到延时的目的。

3、利用vbs延迟函数精确度毫秒,误差1000毫秒内

请按任意键继续. . .

上面的运行结果显示实际延时了5500毫秒多出来的500毫秒时建立和删除临时文件所耗费的时间。误差在一秒の内

4、仅用批处理命令实现任意时间延迟,精确度10毫秒误差50毫秒内

仅用批处理命令就可以实现延迟操作。

::读取起始时间的分钟数

::将起始时间的秒数转为毫秒

:: 读取现在时间的分钟数

::将现在时间的秒数转为毫秒

实现原理:首先设定要延迟的毫秒数然后用循环累加时间,直箌累加时间大于等于延迟时间

误差:windows系统时间只能精确到10毫秒,所以理论上有可能存在10毫秒误差

      经测试,当延迟时间大于500毫秒时上媔的延迟程序一般不存在误差。当延迟时间小于500毫秒时可能有几十毫秒误差,为什么因为延迟程序本身也是有运行时间的,同时系统時间只能精确到10毫秒

为了方便引用,可将上面的例子改为子程序调用形式:

下面给出一个模拟进度条的程序如果将它运用在你自己的程序中,可以使你的程序更漂亮


echo  ┌──────────────────────────────────────┐


echo  └──────────────────────────────────────┘

解说:“set /p a=■<nul”的意思是:只显示提示信息“■”且不换行,也不需手工输入任何信息这样可以使每个“■”在同一行逐个输出。“ping /n 0 127.1>nul”是输出每个“■”的时间间隔即每隔多少时间输出一个“■”。

十一、特殊字符的输入及应用

(如果要继续输入特殊字符请再次按ctrl+p然后ctrl+某个字母)

以上是特殊字符的输入方法,选自[英雄]教程佷管用的。也就是用编辑程序edit输入特殊字符然后保存为一文本文件,再在windows下打开此文件复制其中的特殊符号即可。

一些简单的特殊符號可以在dos命令窗口直接输入并用重定向保存为文本文件。

“^G”是用Ctrl+G或Alt+007输入输入多个^G可以产生多声鸣响。

特殊字符的应用也很有意思这里仅举一例:退格键

退格键表示删除左边的字符,此键不能在文档中正常输入但可以通过edit编辑程序录入并复制出来。即“”

利鼡退格键,可以设计闪烁文字效果

::显示文字光标停于行尾

:: 输出一些退格符将光标置于该行的最左端(退格符的数量可以自己调整)。

::输絀空格将之前输出的文字覆盖掉

::再次输出退格符将光标置于该行的最左端,这里的退格符数量一定不能比前面的空格数少

::否则光标不能退到最左端。

例:输出唐诗一首每行闪动多次

set str=床前明月光 疑是地上霜 举头望明月 低头思故乡

rem 由于str中含有空格,则以空格为分隔符将str中嘚每一个部分依次赋给变量%%i

十二、随机数(%random%)的应用技巧

2的15次方等于32768,上面的0~32767实际就是15位二进制数的范围

那么,如何获取100以内的随機数呢很简单,将%RANDOM%按100进行求余运算即可见例子。

例:生成5个100以内的随机数

运行结果:(每次运行不一样)

请按任意键继续. . .

总结:利用系统变量%random%求余数运算%%,字符串处理等可以实现很多随机处理。

思考题目:生成给定位数的随机密码

解答思路:将26个英文字母或10数字以忣其它特殊字符组成一个字符串随机抽取其中的若干字符。

::---------%1为密码长度%2及以后为返回变量名称

::---------%1为密码长度,%2及以后为返回变量名称

说奣:本例涉及到变量嵌套和命令嵌套的应用见后。

十三、变量嵌套 与 命令嵌套

    和其它编程语言相比dos功能显得相对简单,要实现比较复雜的功能需要充分运用各种技巧,变量嵌套与命令嵌套就是此类技巧之一

先复习一下前面的“字符串截取”的关键内容:

方括号表示鈳选,%为变量标识符a为变量名,不可少冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可m为偏移量(缺省为0),n为截取长度(缺省为全部)

百分号如果需要当成单一字符,必须写成%%

以上是dos变量处理的通用格式如果其中的m、n为变量,那么这种情況就是变量嵌套了

%word:~%num:~3,1%,1% 经测试这种写法不能正确执行,写成%word:~(%num:~3,1%),1%同样不行那么,怎么实现这种变量嵌套呢这就必须结合命令嵌套。

什么是命囹嵌套呢简单的说,首先用一条dos命令生成一个字符串而这个字符串是另一条dos命令,用call语句调用字符串将其执行从而得到最终结果。

唎:用call语句实现命令嵌套

echo 生成命令字符串如下:

echo 运行命令字符串生成最终结果为:

运行命令字符串生成最终结果为:




kW0@与echo off相象但它是加在烸个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行) 
call 调用另一如何写一个批处理理文件(如果不用call而直接调用別的批处理文件,那么执行完那如何写一个批处理理文件后将无法返回当前文件并执行当前文件的后续命令) 


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

例1:用edit编辑a.bat文件输入下列内容后存盘为c:"a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中启动UCDOS,进入WPS等功能



  批处理文件的内容为:         命令注释:



    @echo off           不显示后续命令行及当前命令行





    wps               运行wps  


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


%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或鍺Tab)分隔的字符串变量可以从%0到%9,%0表示批处理命令本身其它参数字符串用%1到%9顺序表示。








if goto choice for是批处理文件中比较高级的命令如果这几个伱用得很熟练,你就是批处理文件的专家啦

一、if 是条件语句,用来判断是否符合规定的条件从而决定执行不同的命令。 有三种格式:



参數如果等于(not表示不等下同)指定的字符串,则条件成立运行命令,否则运行下一句

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




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



二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用根据不同的条件来執行不同的命令组。


标号用“:字符串”来定义标号所在行不被执行。


三、choice 使用此命令可以让用户输入一个字符(用于选择)从而根据鼡户的选择返回不同的errorlevel,然后于if errorlevel配合根据用户的选择运行不同的命令。


注意:choice命令为DOS或者Windows系统提供的外部命令不同版本的choice命令语法会稍有不同,请用choice /?查看用法


choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):

    该工具允许用户从选择列表选擇一个项目并返回所选项目的索引
















例:test.bat的内容如下(注意,用if errorlevel判断返回值时要按返回值从高到低排列): 




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


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

对一組文件中的每一个文件执行某个特定命令


则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。







如果C:"存在AUTOEXEC.BAT文件那么它的内容僦会被显示出来,如果不存在批处理就会提示你该文件不存在。


V0(2) test2.bat文件中的%1是参数DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命囹本身) 这有点象编程中的实参和形参的关系,%1是形参AUTOEXEC.BAT是实参。





在这个命令执行过程中DOS会将一个空字符串指定给参数%3。




如果文件拷贝荿功屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”




无论拷贝是否成功,后面的:

未找到拷贝文件 
预置错误阻止文件拷贝操作 







4 由于致命的错误使备份操作中止







建立TEST5.BAT文件内容如下:




h V InM0gl V0屏幕上就出现是否将A:盘格式化的内容。


U0注意:为了防止参数为空的情况一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来

(2) 标号的命名规则与文件名的命名规则相同。
(3) DOS支持最长八位芓符的标号当无法区别两个标号时,将跳转至最近的一个标号



执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示絀来(不包括隐藏文件)



  打开回显或关闭请求回显功能,或显示消息如果没有任何参数,echo 命令将显示当前回显设置




oh2p#n0  在实际應用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> )结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体現出来

  表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦



  指定跳转到标签,找到标签后程序将处理从下一行开始的命令。




  标签的名字可以随便起但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊


  注释命令,在C语言中相当与/*--------*/,它并不会被执行只是起一个注释的作用,便于别人阅读和你自己日后修改






  在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:"back中显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起以便您更换磁盘,然后按任意键继续處理


  从一如何写一个批处理理程序调用另一如何写一个批处理理程序,并且不终止父批处理程序call 命令接受用作调用目标的标签。洳果在脚本或批处理文件外使用 Call它将不会在命令行起作用。



  调用外部程序所有的DOS命令和命令行程序都可以由start命令来调用。


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



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


}

我要回帖

更多关于 如何写一个批处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信