繁体   English   中英

字符串批量替换为变量

[英]String replace with variable in 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

我正在阅读基础 CSV 文件。 在函数 addId 中, “call set result=%string:!id!=;HELLO;%” 行不起作用。 字符串还是一样的。 我该如何解决这个问题?

试试这个:

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

或者,测试这个:

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

我只是遇到一个问题,似乎不可能在批处理脚本中直接使用命令行参数(如 %1)。
我不得不使用这样的中间变量:

set oldstring=%1
set newstring=%oldstring:oldpart=newpart%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM