-2

----- 评论仅针对此“请求帮助”发布。感谢您对这个问题的考虑和帮助!

----------------- 概述 “搜索和替换”的业余且繁琐的实现 搜索输入文件“2arc!XJ!.txt”中包含的行对于各种子字符串,'XSUBSTG' 当找到包含子字符串的数组元素 !ARY[%%j]! 时,将被标记为 'void',因此当文件在 'Point B' 处重组时,子字符串被省略。

这是我的回忆,已经为此苦苦挣扎了好几个星期,在将代码块包含在“C点”之前,所有现有代码都可以正常工作且没有错误。当添加“点 C”处的代码块时,“)此时出乎意料。发生了错误。

标签 ':TWO' 上面的唯一代码是一些用于初始化变量的 set 语句,一个带有匹配括号的 FOR /F 循环,以及一个与 'TWO' 块相同的块代码,它只是搜索不同的子串。

目前,此代码段的功能直至删除“点 A”,即此时“”是意料之外的。发生错误并停止执行。

我希望能找到解决办法。其次,如果这个论坛的读者如此感动地告诉我如何改进这段代码,以及我的整体编码能力,知识,让我提前感谢大家。非常欢迎您的帮助和建议。

由于严重缺乏知识和理解,请在任何说明、改进的同时附上简单、详细的解释。

再次感谢大家的帮助!

 :TWO
            echo :  ------------------ Search: Two
            set XS2=1
            set XSTG=
 :TEST2
            If !XS2! GTR !XMAX! Goto LOOP
               FOR /L %%j in (%XS2%,1,%XMAX%) do (
                  set XSTG=!ARY[%%j]!
                  set XSUBSTG=!XSTG:~22,%X10%!
                  echo : --------- 10 Begin
                  echo :     XS2=  "!XS2!"
                  echo :     XSTG= "!XSTG!"
                  echo :     XSUBSTG= "!XSUBSTG!"
               call d:\bat\sleep 1
                  If [!XSUBSTG!]==[EOF--Disk:] Goto SKIP2
                     echo : 10 Included - B
                     echo :       ary= "!XSTG!"
                     Goto END
 :SKIP2
                     echo : 10 Skipped - B
                     set ARY[!XS2!]=void
                     set XSTG=!ARY[%XS2%]!
                     echo :     ary= "!XSTG!"
 :END
                     set /a XS2+=1
               )
               echo : --- End For10 -j
               Goto TEST2

 :LOOP
 :: -----  Point 'A'
         If EXIST !XDRV!!XPTHt!2arc!XJ!.txt del !XDRV!!XPTHt!2arc!XJ!.txt> NUL
 :: -----  Point 'B'
         FOR /L %%k in (1,1,%XMAX%) do (
             if !ARY[%%k]!==[void] Goto JUMP
                echo !ARY[%%k]!>> "!XDRV!!XPTHt!2arc!XJ!.txt"
 :JUMP
         )
         set ARY
         pause


 :: -----  Point 'C' - Start of Block
         cls
         echo :
         echo :      Compostion of 2arc!XJ!.txt
         echo :
         FOR /L %%m in (1,1,%XMAX%) do (
             set ARY[%%m]=
         )
         cls
         echo :
         echo :      Array after Flush / Reset
         echo :
         set ARY
         pause
 ::  -----  End of Block

         set /A XJ+=1
         Goto FILTER

无法弄清楚如何附加文件,因此此时带有“)的调试输出是意外的。此处插入错误。

 :  ------------------ Two
 : --------- 10 Begin
 :     XS2=  "1"
 :     XSTG= "void"
 :     XSUBSTG= ""
 : 10 Included - B
 :       ary= "void"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "2"
 :     XSTG= "    Atlanta 2960.txt                                                 2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Atlanta 2960.txt                                                 2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "3"
 :     XSTG= "    Boston 2961.txt                                                  2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Boston 2961.txt                                                  2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "4"
 :     XSTG= "    Cancun 29 62.txt                                                 2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Cancun 29 62.txt                                                 2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "5"
 :     XSTG= "    Denver 2963.txt                                                  2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Denver 2963.txt                                                  2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "6"
 :     XSTG= "    Eaton 265.txt                                                    2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Eaton 265.txt                                                    2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "7"
 :     XSTG= "    Glasgow 2 9 6 7.txt                                              2"
 :     XSUBSTG= "t         "
 : 10 Included - B
 :       ary= "    Glasgow 2 9 6 7.txt                                              2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "8"
 :     XSTG= "    Hartford 269.txt                                                 2"
 :     XSUBSTG= "          "
 : 10 Included - B
 :       ary= "    Hartford 269.txt                                                 2"
 : --- End For10 -j
 : --------- 10 Begin
 :     XS2=  "9"
 :     XSTG= "                      EOF--Disk:2  Sun 02/10/2013  ---               2"
 :     XSUBSTG= "EOF--Disk:"
 : 10 Skipped - B
 :     ary= "void"
 : --- End For10 -j
 ) was unexpected at this time.
4

1 回答 1

1

不要尝试在块内设置标签,它们不会按预期工作,因为它们会破坏每个循环。

如果标签后的下一行以)您的语法错误开头。

:JUMP在您的情况下,它是导致错误的标签。
但就像我说的,其余的都行不通。

于 2013-02-12T20:41:33.903 回答