hydralisk
【一】
好久没写东西了,白牛准备apio的时候用到了批处理命令,感觉挺好玩,于是就找来东西看看。这个被学oi亲切地称作“对拍”,因为写起来方便,又能批量 地对比程序的结果,在noi中广泛应用。当然有些牛noip中闲极无聊也用批处理玩玩。
(由于找到的参考资料作者是匿名的,无法感谢,网址也忘了,囧)
大家讲命令都是以echo命令开始我也这么着写吧。
1.echo就像Pascal里面的write,c里面的printf,c++里面的cout,java里面的println()之类的。
还是举例说明,新建*.bat,然后右键->编辑(E),打进去
@echo This is www.gaojiawei.com
@pause
运行出结果。这个pause就有点类似于程序中的断点,暂停下来。@的作用是不显示命令本身,想知道结果的话可以去掉试试。每句都打@得麻烦死人, 用echo off 命令关掉回显功能。当然,你要是看echo off 本身这句命令也不顺眼,在他前面加上@就行了。如果不想看那个按任意键继续那就 改成这个命令 pause>nul 不显示执行信息。
echo. 是打出个空行,把. 换成 , : ; ” / / [] 都行。
2.goto命令就是个大高级程序都不推荐使用的那个东西,在这里倒不是那么不受欢迎。语法都没变,怪不容易的。goto label (对了,谁 知到lable和label的有啥区别)
@echo off
goto bye
echo What are you looking for?
:bye
echo So long,farewell.Time to say goodbye.
pause
这个一看就明白。
3.提到goto就不得不提到call命令。call就是大家熟悉的类似子程序,过程函数的调用,调用完了还回来。批处理的call既可以本程序里 面来回调用label也可以调用外部批处理文件。这个倒蛮方便,看例子:
@echo off
echo I am boy1!
call :boy2
echo time to say goodbye!&pause
:boy2
echo I am boy2
:boy3
echo Am I boy3?
pause
输出显示
I am boy1!
I am boy2
Am I boy3?
请按任意键继续. . .
time to say goodbye!
请按任意键继续. . .
I am boy2
Am I boy3?
请按任意键继续. . .
这个意思很明显就是调用完以后回来原来的地方。而把call换成goto的话,
结果是:
I am boy1!
I am boy2
Am I boy3?
请按任意键继续. . .
goto就不跳回原来程序了,这样容易打乱程序流程,也是都禁用goto的原因。不过goto这里并不是一点用也没有,比如 goto end提前 结束程序到不错。
外部调用批处理命令是这么用
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
比方一个bat这么写:
@echo off
call d:/aa.bat
另一个
@echo woshinidaye > a.txt
那么运行第一个就在第一个文件的目录下生成一个a.txt…里面写着…
>是相当于rewrite从写,>>相当于append,就是在文件末尾追加。
4.一旦程序时间长了,自己也容易忘,在大量吃忘不了以后仍然记不住某些程序段的意思的话,可以考虑用注释(汗!)-_-||
rem 命令是注释,这个不用多说,注释写起来也算到工作量里面,可以多挣些钱。一行代码两行注释…然后咣叽咣叽数钞票。(据说小说家古 龙这么干过,
风。
风吹。
冷风吹。
六个字三行,当时有人觉着很酷,佩服得五体投地,简直太牛了,后来才知道台湾小说家不按字数,按行算稿费的-_-||)不说废话了,例子:
@Rem One of the quickest way to get money.
5.start命令。调用外部程序,不仅限于bat或者cmd扩展名的文件(call只能调用这两种)我怎么感觉直接写个文件名也能调用,对拍的时 候就没用start….
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[parameters]
这个看着真麻烦…还是举例子:
@echo off
start explorer.exe ”e:/”
这个作用就是打开e盘。这个system32的程序好像可以直接运行。
@echo off
start ”" ”C:/WINDOWS/system32/calc.exe”
打开计算器。前面的空引号是title,也就是显示的标题名字。后面才是路径。当然 start calc 也可以弄出来这个东西。
再比如有个key.exe的程序,还有个input.in的文件
Key <input.in >output.out
这样也能直接输入输出。
6.choice命令xp里面没有了。用set /p var= 来建立一个变量,然后根据输入值来分开情况。这个例子放到以后跟别的一起弄。
7.经典的if命令。三种格式,不像现在的就一种。
①if ”参数”==”字符串” 待执行命令
例: if ”%1″==”a” format a:
②if exist 文件名 待执行命令
例: if exist config.sys edit config.sys
③if (not)errorlevel 数字 待执行命令
例: if errorlevel 2 goto again
这个是对拍常用的,通过对比程序,返回errorlevel,看结果一致不,不一致考场上可有的忙了。一致了偷着乐吧… 更多用法以后举例子。
慢慢写不着急,一下子写多了不好消化,往后还有强大的for,还有参数以及组合命令,特殊符号…字符串也算上吧…看这个有什么用呢,估计和名字比较像,批 量么,就是完成大量重复的工作,当然,仅仅当成兴趣玩也行。
现在操作系统都傻瓜化了,用命令行一些的人也少了,现在学一点可以加深同学对你的仰视-_-||看起来酷酷的,像黑客?但其实你也知道没啥了,骗小 孩玩的。