【问题标题】:Remove text containing specific character in variable with windows command line使用 Windows 命令行删除变量中包含特定字符的文本
【发布时间】:2014-08-14 04:15:43
【问题描述】:

我希望删除环境变量中包含等号的文本, 我的代码 sn-p 如下:

SET JAVA_OPTS= -Dlog4j.configuration=./logservice.properties -Duser.timezone=GMT+08:00
SET "logText= -Dlog4j.configuration=./logservice.properties "
SETLOCAL EnableDelayedExpansion
@echo JAVA_OPTS = %JAVA_OPTS%
SET "JAVA_OPTS=!JAVA_OPTS:%logText%= !"
@echo modified JAVA_OPTS = !JAVA_OPTS!
ENDLOCAL & SET "JAVA_OPTS=%JAVA_OPTS%"

文本删除后的预期输出应该是

modified JAVA_OPTS = -Duser.timezone=GMT+08:00

我怎样才能达到预期的效果?

【问题讨论】:

    标签: windows batch-file replace command


    【解决方案1】:
    @ECHO OFF
    SETLOCAL
    SET JAVA_OPTS= -Dlog4j.configuration=./logservice.properties -Duser.timezone=GMT+08:00
    SET "logText1= -Dlog4j.configuration"
    SET "logText2=./logservice.properties "
    SETLOCAL EnableDelayedExpansion
    echo JAVA_OPTS = %JAVA_OPTS%
    SET "JAVA_OPTS=!JAVA_OPTS:*%logText1%=!"
    SET "JAVA_OPTS=!JAVA_OPTS:*%logText2%=!"
    echo modified JAVA_OPTS = !JAVA_OPTS!
    ENDLOCAL & SET "JAVA_OPTS=%JAVA_OPTS%"
    echo final JAVA_OPTS = %JAVA_OPTS%
    ENDLOCAL
    :: have now backed out environment variable updates - try again
    SETLOCAL
    SET JAVA_OPTS= -Dlog4j.configuration=./logservice.properties -Duser.timezone=GMT+08:00
    SET "logText2=./logservice.properties "
    SETLOCAL EnableDelayedExpansion
    echo JAVA_OPTS = %JAVA_OPTS%
    SET "JAVA_OPTS=!JAVA_OPTS:*%logText2%=!"
    echo modified JAVA_OPTS = !JAVA_OPTS!
    ENDLOCAL & SET "JAVA_OPTS=%JAVA_OPTS%"
    echo final JAVA_OPTS = %JAVA_OPTS%
    
    GOTO :EOF
    

    两种方式。你付钱,你做选择。

    问题集中在= 的特殊用途上,cmd 无法区分。替换的是哪个字符串?

    【讨论】:

    • 啊...通配符,只需删除带有 = 的文本并替换为空字符串即可。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    相关资源
    最近更新 更多