2016-08-09 251 views
1

我想用另一個字符串批量替換字符串中的一部分。但我不知道這個字符串會是什麼。所以我想用這個變量:用批量變量替換字符串

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 

我在閱讀基本的CSV文件。在函數addId中,行「call set result =%string:!id!=; HELLO;%」不起作用。字符串仍然是相同的。我怎樣才能解決這個問題 ?

+0

你爲什麼FOR變量設置爲id變量?沒有必要這樣做。你應該可以這樣做:'set result =!string:; %% a; =; HELLO;!' – Squashman

+0

呃,那是因爲它沒有工作,所以我嘗試了一些東西! –

+0

它確實有效。再試一次。 – Squashman

回答

3

試試這個:

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

另外,測試這一點:

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

它的工作原理!謝謝 ! –

+0

是的,我只需要再等4分鐘才能接受答案! ;) –