DOS-BAT command line

http://www.allenware.com/icsw/icswidx.htm (reference)

http://tldp.org/LDP/abs/html/dosbatch.html (contrast in unix shell)

 

1. DOS命令FOR /F 字符处理功能

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

options为可选参数包括:

eol=c            - 指一个行注释字符的结尾(就一个)    (注释掉以某个字符开始的行
skip=n           - 指在文件开始时忽略的行数。
delims=xxx       - 指定分隔符集,默认的分隔符为空格和制表符。

tokens=x,y,m-n   - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n
                            格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符为星号,
                           那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。    

(即分割为几部分,举例:tokens=2,3*   就等于分成了4部分,后面的变量从从第二部分开始取)
usebackq         - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
(解析加双引号的文件名,以及变量加单引号时,需要用到这个命令)

 

%variable   指定一个单一字母为可替换的参数。指定变量请使用 %%variable。(与tokens划分的部分一一对应)。

 

for /f的主要作用是从文本行中提取出特定的字符串。因此,它的每一个循环处理的就是一行文本。要从这行文本中提取出特定的字符串,就需要对这一行文本进行分隔,分隔的结果就是将这一行文本分成了若干个部分,例如下面一行文本:

2007-04-02

for /f "tokens=1-3 delims=-" %1 in ("2007-04-02") do @echo %2%3

首先delims利用"-"进行分隔

tokens 指明为1-3 说明是3部分,还可以用其他方式表达如 tokens=1,2,3 或者tokens=1,2* (*表示出1,2部分外剩余的部分,这个示例里面就代表第3部分)

%1的意思是参数从%1开始划分(也可以是字母) 后面两部分依次是%2和%3

in 说明要处理的字符在哪

do 表示开始执行命令

@echo作用是隐藏命令(屏幕输出时就隐藏了echo命令)   

%2%3 说明输出字符的排序,可以添加字符进行连接如:   %2月%3日   就会输出    04月02日

注意事项:

您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或
'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且, 同时不能有 52 个以上都在使用中。

 

2. linux command: find *test* f -print0 | xargs -0 cat

此时文件名中可以包含空格

posted @ 2010-05-30 08:00  kelin1314  阅读(723)  评论(1编辑  收藏  举报