2016-06-20 193 views
1

我仍然在学习语言,所以请放纵。问题与我的批处理脚本

在下面的代码中与我的START变量相关的条件从不触发,我找不到原因。如果当前行以“80 /”开头,并且前面的行以分号和空格开始,那么该部分应该执行。可能是一个synthax错误或一些这样的。任何帮助将不胜感激。

@ECHO OFF 
SETLOCAL DISABLEDELAYEDEXPANSION 

>"%~dpn1_2.txt" (
    FOR /F "tokens=1* delims=]" %%j in ('find /V /N "" %1') DO (
     SET "currentLine=%%k" 
     SETLOCAL ENABLEDELAYEDEXPANSION 
     IF "!currentLine:~0,2!"=="; " (
      SET START=1 
     ) ELSE IF "!currentLine:~0,3!"=="80/" (
      IF "!START!"=="1" (
       SET "currentLine=!currentLine:~0,2!!currentLine:~3,5! !currentLine:~18!" 
       SET START= 
      ) ELSE (
       SET string=!currentLine:~0,2!!currentLine:~3,4! 
       FIND "!string!" labels.txt > nul 
       IF !errorlevel! EQU 0 (
        SET "currentLine=!currentLine:~0,2!!currentLine:~3,5! !currentLine:~18!" 
       ) ELSE (
        SET "currentLine=   !currentLine:~18!" 
       ) 
      ) 
     ) 
     ECHO(!currentline! 
     ENDLOCAL 
    ) 
) 
+0

有没有'批量 – SomethingDark

+1

@SomethingDark ELSE IF','其他if'不做工精细... – aschipfl

+0

这是误导。 – SomethingDark

回答

0
@ECHO OFF 
SETLOCAL DISABLEDELAYEDEXPANSION 

>"%~dpn1_2.txt" (
    FOR /F "tokens=1* delims=]" %%j in ('find /V /N "" %1') DO (
    SET "currentLine=%%k" 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    IF "!currentLine:~0,3!"=="80/" (
     IF "!previousLine:~0,2!"=="; " (
     SET "currentLine=!currentLine:~0,2!!currentLine:~3,5! !currentLine:~18!" 
    ) ELSE (
      SET string=!currentLine:~0,2!!currentLine:~3,4! 
      FIND "!string!" labels.txt > nul 
      IF !errorlevel! EQU 0 (
      SET "currentLine=!currentLine:~0,2!!currentLine:~3,5! !currentLine:~18!" 
     ) ELSE (
       SET "currentLine=   !currentLine:~18!" 
     ) 
     ) 
    ) 
    ECHO(!currentline! 
    ENDLOCAL 
    SET "previousLine=%%k" 
) 
)