机务在线

搜索
查看: 1737|回复: 1

[谈天说地] 批处理命令

[复制链接]

151

主题

534

帖子

535

积分

机务学徒工

Rank: 3Rank: 3

积分
535
发表于 2007-11-20 20:34:02 | 显示全部楼层 |阅读模式 来自: 中国吉林长春
[/free]常用命令:

  echo、@、call、pause、rem 是批处理文件最常用的几个命令。
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
call 调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令)
pause 运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续  
rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的  

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

  批处理文件的内容为:         文件表示:

    echo off            不显示命令行

    dir c:\*.* >a.txt       将c盘文件列表写入a.txt

    call c:\ucdos\ucdos.bat    调用ucdos

    echo 你好            显示"你好"

    pause              暂停,等待按键继续

    rem 使用wps           注释将使用wps

    cd ucdos            进入ucdos目录

    wps               使用wps  

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

   %表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。

  例如,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文件的内容。
===========================================================================

特殊命令:

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

  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 批处理文件运行到这里将跳到goto 所指定的标号处, 一般与if配合使用。 如:

goto end

:end
echo this is the end

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

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

如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?

例如,test.bat的内容如下:
@echo off
choice /c:dme 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 [%%f] in (集合) DO [命令]
只要参数f在指定的集合内,则条件成立,执行命令

如果一条批处理文件中有一行:
for %%c in (*.bat *.txt) do type %%c
含义是如果是以bat或txt结尾的文件,则显示文件的内容。

注意~~以上的命令,有些是不能在2000下用的~~

其实2000下的DOS命令多了很多~功能也强大了不少~~具体大家可以查看WINDOWS的帮助!

还有就是~~用批处理来做计划任务是不怎么现实的~还是老实的做个小程序吧~ :)

附AT命令的用法:
==========================================================================
列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。

at [\\computername] [[id] [/delete] | /delete [/yes]]

at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command

参数



如果在没有参数的情况下使用,则 at 列出已计划的命令。

\\computername

指定远程计算机。如果省略该参数,命令将安排在本地计算机。

id

指定指派给已计划命令的识别码。

/delete

取消已计划的命令。如果省略了 id,计算机中已计划的命令将被全部取消。

/yes

当删除已计划的事件时,对系统的查询强制进行肯定的回答。

time

指定运行命令的时间。将时间以 24 小时标记(00:00 [午夜] 到 23:59)的方式表示为小时:分钟。

/interactive

允许作业与在作业运行时登录用户的桌面进行交互。

/every:date[,...]

在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行命令。将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。

/next:date[,...]

在重复出现下一天(例如,下个星期四)时,运行指定命令将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。

command

指定要运行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。如果命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c,例如:

cmd /c dir > c:\test.out

-----------------------------------------------------------------------------
说明
at 命令要求您是本地 Administrators 组的成员。at 命令在运行命令前也不会自动加载命令解释程序 cmd。如果正在运行可执行文件 (.exe),则在命令开头必须专门加载 Cmd.exe,例如:

cmd /c dir > c:\test.out。

查看已计划的命令

at 命令具有两种输出格式。在使用没有选项的 at 时,将出现与下面消息相似的内容:

状态 ID 日期 时间 命令行
0 Each F 04:30PM net send group leads status due  
2 Each M 12:00AM chkstor > check.fil
3 Each F 11:59PM backup2.bat  

在包括命令的识别号时,显示提供单个项的信息,并且以下内容相似:

Task ID: 0

Status:OK

Schedule:Each F

Time of Day:04:30PM

Command:net send group leads status due

当计划带有 at 的命令(尤其是带有选项变量的命令)后,通过键入不带选项的 at 来检查命令是否输入正确。如果“命令行”列中的信息不正确,请删除命令并重新输入。如果它仍然不正确,请重新键入带有更少的选项变量的该命令。

查看结果

使用 at 命令计划的命令在后台运行,因此计算机屏幕上没有输出显示。要将输出重定向到文件,请使用重定向符号 (>)。如果将输出重定向到文件,请在重定向符号前使用转义符号 (^)。不管在命令行还是在批处理文件中使用 at,都必须使用转义符号,如下例所示:

at 14:45 c:\test.bat ^>c:\output.txt.

执行命令的当前目录在 %systemroot% 目录。

更改“系统时间”

如果使用 at 命令安排了运行命令的时间后更改计算机的系统时间,通过键入不带选项的 at 将 at 计划程序与新设置的时间同步。

存储字符串

因为计划的命令存储在注册表中,所以如果必须重新启动“计划”服务,计划的任务也不会丢失。

连接到网络驱动器

所计划的访问网络的作业不应该使用由用户重定向的驱动器。“计划”服务可能无法访问这些驱动器,或者如果其他用户在计划作业运行时同时登录,则这些驱动器可能不会出现。相反,计划的作业应该使用 Unc 路径,如下例所示:

at 1:00pm my_backup \\server\share

以下范例,其中 x: 是用户建立的连接,不能使用:

at 1:00pm my_backup x:

如果计划使用驱动器号的 at 命令以连接共享目录,则应该在使用完成时包含 at 命令以断开与驱动器的连接。如果驱动器没有断开连接,所指派的驱动器号将不可用或无法在命令提示符中看到。
------------------------------------------------------------------------------
范例
要显示 Marketing 服务器上已计划的命令列表,请键入:

at \\marketing
要了解有关服务器 Corp 上身份验证号为 3 的命令的详细信息,请键入:

at \\corp 3
要计划早晨 8:00 在 Corp 服务器上运行网络共享命令并将列表重定向到服务器 Maintenance、共享目录 Reports 和文件 Corp.txt,请键入:

at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt"
要每隔 5 天在午夜将 Marketing 服务器的硬盘驱动器备份到磁带驱动器,请创建包含备份命令的批处理程序 (Archive.cmd)。然后通过键入以下命令计划批处理程序运行:

at \\marketing 00:00 /every:5,10,15,20,25,30 archive
要取消当前服务器上计划的所有命令,请键入以下命令清除 at 计划信息:


[free]
购买主题 本主题需向作者支付 1 JM机务米 才能浏览
回复

使用道具 举报

6

主题

265

帖子

171

积分

见习机务员

Rank: 2

积分
171
发表于 2007-11-23 10:46:44 | 显示全部楼层 来自: 中国上海
飞过的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表