windows批处理释义

for循环

for /f %%i in (a.txt) do echo %%i

/f 表示in后括号中是读取文件。

for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i

默认情况下,for将每一行作为一个值给%%1,如需更小的划分,则采用tokens和delims。

delims表示分隔符号集,将以这些符号(可以同时指定多个)分割后的第一个元素作为值传给%%1。

当我们想要分割后的第二个及以后的元素值呢?这时候使用tokens来限定。

tokens 可以使用通配符*(所有)、范围限定(3-9)、序列(2,3,5)。

例子里面 tokens=2 delims= 的意思就是,将每一行,再使用空格细分,并提取第2个细分结果给%%1作为值。

我们还可以用“skip=行数”来跳过文件开头的行,用”eol=符号“来提取指定符号开始的行。

你可以用%%1,%%a等来代替%%i。有个更有意思的地方,当我们使用%%1储值时,%%2将存储for循环所提取行,被tokens 和delims所定位部分的剩余部分。%%b同理。这个特性特别有助于我们获取一行中某个特殊符号后面的字符串。

特殊符号

|| 连接多个命令,若前面的命令失败,则继续执行后面的命令。

& 连接多个命令,表示顺序执行这些命令,无论命令成功与否。

&& 连接多个命令,表示顺序执行这些命令,一旦其中某个命令失败,则后续命令不再执行。

| 连接多个命令,表示前面命令输出的结果,作为后一个命令的输入,这就是所谓的“管道”。