2016-08-09 174 views
1

Ich möchte einen Teil einer Zeichenfolge im Stapel durch eine andere Zeichenfolge ersetzen. Aber ich weiß nicht, was diese Saite sein wird. Also würde ich gerne eine Variable dafür verwenden:String ersetzen durch Variable im Batch

for /r %%i in (\file\tmp\*) do (
    call :createJob %%i 
) 
goto :eof 

:createJob 
    SETLOCAL 
    set filename=%1 
    for /F "delims=" %%i in (%filename%) do (
     set "line=%%i" 
    ) 
    call :addId "%line%" 
    ENDLOCAL 
goto :eof 

:addId 
    @setlocal enableextensions enabledelayedexpansion 
    set string=%~1 
    set /A "i=0" 
    echo %string% 
    for %%a in (%string%) do (
     if !i! EQU 1 (
      set id=;%%a; 
      call set result=%string:!id!=;HELLO;% 
     ) 
     echo %%a 
     set /A "i+=1" 
    ) 
    echo %result% 
    ENDLOCAL 
goto :eof 

:eof 

Ich lese Grundlagen CSV-Dateien. In der Funktion addId funktioniert die Zeile "Aufrufmenge result =% string:! Id! =; HELLO;%" nicht. Die Saite ist immer noch dieselbe. Wie kann ich das beheben?

+0

Warum sind Sie die FOR-Variable auf die ID variable Einstellung? Das ist nicht nötig. Das solltest du tun können: 'set result =! String:; %% a; =; HALLO;!' – Squashman

+0

Nun, es war, weil es nicht funktionierte, also habe ich ein paar Dinge ausprobiert! –

+0

Es funktioniert. Versuche es noch einmal. – Squashman

Antwort

3

diese stattdessen versuchen:

call set result=%%string:!id!=;HELLO;%% 

Alternativ Test dies:

set result=!string:;%%a;=;HELLO;! 
+0

Es funktioniert! Vielen Dank ! –

+0

Ja, ich muss nur noch 4 Minuten warten, bevor ich die Antwort akzeptiere! ;) –