CMD中for循环的关键字,delims等是怎么用的?“delims=”啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMD中for循环的关键字,delims等是怎么用的?“delims=”啥意思?相关的知识,希望对你有一定的参考价值。

参考技术A

delims

分隔符,用抽象的形容可以是:以<什么>来进行分割

对应 delims=

如果出现一个等于,则代表全部

反之,delims=,

则代表以,来进行分割

 

 

讲解,认真理解

如果现在有一个字符串数据:

123,234,345

 

tokens=2 delims=,

则代表:

1. 以 , 分割

2. 提取第二份

那么最后取出字符 234

 

tokens=1 delims=, (取字符123)

 

tokens 您可以理解为取第几份/列,这里也是比较抽象的形容

 

不管是tokens,delims,skip等等

都是运用在for语句当中

要熟练学习,您必须亲自新建文本,在敲代码亲自实现学习

 

中国批处理脚本联盟

追问

出现一个等于,全部反之,什么意思?

追答

一个等于则代表全部的意思,如果=后面跟着任何字符,符号等,则代表用什么来进行分割,如delims=],则代表用 ] 来进行分割,一般后面如果有字符或符号,那么就会用tokens来进行取列/份

追问

for \f “delims=” …
这里到底用什么进行分割的?

追答

没有用什么分割,它代表全部,如果指定一个文本,则代表整个文本内容

追问

请帮我分析这个脚本的for语句部分,谢谢

本回答被提问者和网友采纳

我的算术表达式在 CMD FOR 循环中不起作用 [重复]

【中文标题】我的算术表达式在 CMD FOR 循环中不起作用 [重复]【英文标题】:my arithmetic expression doesnt work in a CMD FOR loop [duplicate] 【发布时间】:2018-12-18 16:22:45 【问题描述】:

我想在这样的 For 循环中生成一个随机数(部分):

FOR /F "delims=, eol=; tokens=1,2" %%a in (DATA.TXT) DO (   
    SET min=10000
    SET max=99999
    SET /a passwort=!min!+(!max!-!min!+1)*%random%/32768
)

不幸的是,它返回了这个错误:

“*[随机生成的数字]/32768”此时无法进行语法处理。

【问题讨论】:

OP 有一个特定错误,恕我直言,How to use random in BATCH script? 【参考方案1】: 它不起作用,因为 set /a 命令没有双引号,并且 (代码块)以未转义的关闭过早结束 公式中的括号。 否则公式有可能产生负数的缺陷 由于先相乘而得到的数字 (set /a 仅限于有符号的 32 位 整数数学)。 同样在(代码块)内,它必须是!random!,而所有 其他变量不需要%/! 进行扩展(特殊设置/A) 如果没有进一步的预防措施,这个范围内的数字密码不是很安全, 但是您可以重复使用随机数从一组字符中生成任意长度的密码,例如this answer
:: Q:\Test\2018\07\10\SO_51271717.cmd
@Echo off & SetLocal EnableExtensions EnableDelayedExpansion

SET /A "min=10000,max=99999,range=max-min+1"

FOR /F "delims=, eol=; tokens=1,2" %%a in (DATA.TXT) DO (   
    SET /a "passwort=min + range / 32768* !random! "
    Echo passwort=!passwort!
)

样本输出:

> Q:\Test\2018\07\10\SO_51271717.cmd
passwort=10528
passwort=56868
passwort=34042
passwort=40878
passwort=32590
passwort=47396
passwort=51676
passwort=66530
passwort=40106
passwort=56218

【讨论】:

以上是关于CMD中for循环的关键字,delims等是怎么用的?“delims=”啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

我的算术表达式在 CMD FOR 循环中不起作用 [重复]

bat for循环语法错误

bat实现获取文件每行内容,for循环中运行多条命令

如何在使用“delims =”作为扩展列表时将搜索目录包含到 FOR-DO 循环中

cmd环境变量?

C#中,定义了一个枚举,怎么用for循环来遍历枚举中的每个值?