2016-06-20 10 views
1

Ich lerne immer noch die Sprache, also seien Sie bitte nachsichtig.Problem mit meinem Batch-Skript

Die Bedingung im Zusammenhang mit meiner START-Variable im folgenden Code wird nie ausgelöst, und ich kann nicht herausfinden, warum. Dieser Teil soll ausgeführt werden, wenn die aktuelle Zeile mit "80 /" beginnt und die vorhergehende Zeile mit einem Semikolon und dann einem Leerzeichen beginnt. Wahrscheinlich ein Synthax-Fehler oder ähnliches. Jede Hilfe würde sehr geschätzt werden.

@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

Es gibt keine 'ELSE IF' in Batch – SomethingDark

+1

@SomethingDark,' sonst if' funktioniert gut ... – aschipfl

+0

Es ist irreführend. – SomethingDark

Antwort

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" 
) 
) 
Verwandte Themen