怎么写cmd脚本( 二 )


goto 跟c里面差不多,标记用"adkfjdf:"来表示,然后"goto adkfjdf" for FOR %variable IN (set) DO command [command-parameters] (保留字大小写都无所谓,微软的系统一般都是这样) %variable 的变量名有且仅有一个字母 。
如果是在脚本文件中使用for语句,必须写成%%variable,两个"%" set 指定一个或一组文件 。可以使用通配符 。
for /d。与目录名匹配(directory),没有"/d"则只有文件名被%variable迭代,如果都要,只好写两句话了 。
Sad for /r [[driver:]path]。
"/r"表示recursion,包括了一下的所有子目录,后面[[driver:]path]参数指定起点,如果没有则表示当前目录 。for /l %variable in (start,step,end)。
"/l"表示list,后面start,step,end都是数字,表示初值,步长和终值,比如打印1-100的命令 for /l %e in (1,1,100) @echo %e for /f ["options"] %e in (fileset)。. for /f ["options"] %e in ("string")。
. for /f ["options"] %e in ('command')。. (这里是平常的单引号!!!) 与linux下面的grep或者sed已经有点像了,有点行编辑的功能 。
表示把%e表示的文件打开读入缓冲,在缓冲中对每一行进行处理,把 token存入相应的变量,然后执行命令,继续下去直到所有文件都被处理过 。因为所有的处理都是在缓冲中,所以对原文件的内容没有任何影响 。
也可用来分析字符串或者命令行的输出 。options: eol=c,(end of line),指定一个符号,这个符号之后的文本会被当作注释 。
skip=n,指定一个数字,处理的时候会略过开头的这么多行 。delims=xxx,制定一批字符,代替空格和回车作为token与token之间的分隔符(delimits) tokens=x,y,m-n 第一个词语的标号为1,以此类推,后面%variable表示第一个词,拿%i来当例子 。
如果是写成tokens=1,2,3,4,那么%i表示第一个词,%j表示第二个词,%k表示第三个,%l表示第四个 。这样写是不是很麻烦,于是你可以等价的写成1-4达到同样的效果 。
大家知道%variable因为只能取一个字母(微软做这种shell的解析真的很偷懒),所以最多你只能同时控制52个词,取为%A,最后一个为%z 。最后在不加","的情况下使用 ,表示这行剩下所有的部分都是一个词 。
如果一开始就token=,那么就是取一整行的内容 。usebackq (use back quotes,使用反引号),为什么要使用反引号呢?因为(set)中的文件名可能会带有空格,这样的文件名需要用""括起来,但是,这样不是跟表示 string的语法冲突了吗?所以我们必须开启“使用反引号”的开关,开启之后,""中括起来的部分被当作文件名看待 。
而”(正常单引号)括起来的部分被当作字符串,最后“(反单引号)括起来的部分被当作命令 。for基本到这里,最后那一部分诸如"%~aI"没有看懂,达人帮忙领悟一下,帮助实在翻译得太烂 。
参数与shift %0表示命令自己的文字 。%1表示第一个参数 。
%9表示第九个参数,超过了9个怎么办?没有问题,我们可以使用shift 。
这10个参数就好像10个连续的观察点一样 。一旦shift,就是右移,这样就%0变成了原来的%1 。
%9变成了原来的"%10" 。
5. 如何用cmd运行按键精灵脚本 按键精灵自己就提供生成小精灵模式吧,可以直接运行 。
如果你有编程基础,那其实可以抛开按键精灵环境,自己写脚本,去下载个大漠插件dm.dll,他最初是给按键精灵做插件的,后来独立出来了,非常好用,跟按键的风格无缝衔接,都是vb类脚本,vbs,vb或者vb.net都可以直接调用的
set dm = createobject("dm.dmsoft")
TracePrint dm.Ver()
hwnd = dm.GetMousePointWindow()
dm_ret = dm.BindWindow(hwnd,"dx2","dx2","dx",0)
TracePrint dm_ret