Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Wierd使用脚本查找字符串长度的结果?_Batch File_String Length - Fatal编程技术网

Batch file Wierd使用脚本查找字符串长度的结果?

Batch file Wierd使用脚本查找字符串长度的结果?,batch-file,string-length,Batch File,String Length,当我输入一些carot(^)测试它时,我正在测试由Unclesmeat提交的代码(Unclesmeat引用),它产生了一些有趣的结果 蓝蝙蝠 Len.bat的测试 忽略doubleMore?,其中我只是返回,没有输入任何内容,模式是: 0 十二, 十二, 一, 一, 十三, 十三, 二十二 二十二 十三, 十三, 二, 二, 十四, 十四, 二十三 二十三 十四, 十四, 二十三 二十三 十四, 十四, 二十三 二十三 每一个奇怪的事件都会提示我加倍更多?,这就是为什么它加倍了,但从其他方面看,

当我输入一些carot(
^
)测试它时,我正在测试由Unclesmeat提交的代码(Unclesmeat引用),它产生了一些有趣的结果

蓝蝙蝠 Len.bat的测试 忽略double
More?
,其中我只是返回,没有输入任何内容,模式是:

  • 0
  • 十二,
  • 十二,
  • 一,
  • 一,
  • 十三,
  • 十三,
  • 二十二
  • 二十二
  • 十三,
  • 十三,
  • 二,
  • 二,
  • 十四,
  • 十四,
  • 二十三
  • 二十三
  • 十四,
  • 十四,
  • 二十三
  • 二十三
  • 十四,
  • 十四,
  • 二十三
  • 二十三
  • 每一个奇怪的事件都会提示我加倍
    更多?
    ,这就是为什么它加倍了,但从其他方面看,这些结果都很奇怪。我认为它必须与代码中的以下行做些什么,但似乎没有关系


    对这些不规则的数据有什么解释吗?或者这仅仅是cmd的一个方面……

    有很多原因导致代码在插入符号时完全失败。
    首先,尝试调用批处理的方式将失败

    插入符号转义下一个字符,并从行中删除。
    行端的单个插入符号会转义行端(称为多行插入符号),这就是为什么cmd.exe会显示提示
    更多?
    。 这将适用于所有奇数个插入符号

    用七个插入符号取样

    length ^^^^^^^
    More?
    More?
    
    cmd.exe将使用以下字符串调用长度bat 换行符将从
    %1
    参数中拆分,因此在%1中只有
    ^^

    但现在你知道这部分完全失败了

    set s=%1
    set length=0
    
    当它扩展到 设置=^^^ 设置长度=0

    由于最后一个插入符号现在是一个多行插入符号,它将追加到行中
    设置长度=0

    因此,变量
    s
    中现在是内容
    ^set length=0

    这是行不通的

    即使在该块中,
    %s:~1%
    也会导致进一步的问题,因为当
    s
    包含插入符号时(当使用8个插入符号
    length^^^^
    时),它也会扩展到多行插入符号

    有关插入符号的更多说明,请阅读

    我在序列的第7部分找到了原因:
    set s=%1 set length=0
    长度为12个字符。但这并不能解释后面的数字。
    length ^^^^^^^
    More?
    More?
    
    set s=%1
    set length=0
    
    if defined s (
        set s=%s:~1%
        set /A length += 1
        goto count
    )