batch-file - 使用批处理修改 .properties 文件中的字符串

标签 batch-file cmd insert

我正在尝试通过执行脚本来修改 csm.properties 中的某个属性。 我查了很多资料,最后找到了这段代码。

set "search=CLASSPATH"
set "insert=CLASSPATH^=plugins^/Numbering.jar^\^:"

set "textFile="%workingPlace%bin\csm.properties""

FOR /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
    FOR /f "tokens=1*delims==" %%g IN ("%%i") DO (
        IF /i "%%g" == %search% (
            set "line=%%i"
                setlocal enabledelayedexpansion
                >>"%textFile%" echo(!line:%search%=%insert%!
                endlocal
        )ELSE (
        %%i
        )
    )
)

此代码应读取文件中的每一行并使用 = 作为分隔符。如果代码将“CLASSPATH”作为属性,则应修改该行。 但似乎没有找到 CLASSPATH。

这就是 csm.properties 的样子:

#Tue Jul 10 08:50:23 CEST 2018
JAVA_ARGS=-Xmx20000M -DLOCALCONFIG\=true -splash\:data/splash.png -Dmd.class.path\=$java.class.path -Dcom.nomagic.osgi.config.dir\=configuration -Desi.system.config\=data/application.conf -Dlogback.configurationFile\=data/logback.xml -Dsun.locale.formatasdefault\=true -Dinitial.user.language\=de
JAVA_HOME=jre1.8.0_152
BOOT_CLASSPATH=lib/xalan.jar
MAIN_CLASS=com.nomagic.osgi.launcher.ProductionFrameworkLauncher
MAC_JAVA_ARGS="-Xdock\:name\=Cameo Systems Modeler" -Xdock\:icon\=bin/md.icns -Dapple.laf.useScreenMenuBar\=true
APP_ARGS=
DEFAULT_MEMORY_SETTINGS_64=-Xmx[30%,1200,4000]M
DEFAULT_MEMORY_SETTINGS_32=-Xmx800M
CLASSPATH=lib/patch.jar\:lib/brand_api.jar
CONSOLE=false

修改后,CLASSPATH应如下所示:

CLASSPATH=plugins/Numbering.jar\:lib/patch.jar\:lib/brand_api.jar

最佳答案

更简单...

@echo OFF
setlocal

set "search=CLASSPATH"
set "insert=plugins/Numbering.jar\:"

set "textFile=%workingPlace%bin\csm.properties"

(FOR /f "usebackq tokens=1* delims==" %%i in ("%textFile%") do (
   if "%%i" equ "%search%" (
      echo %search%=%insert%%%j
   ) else if "%%j" neq "" (
      echo %%i=%%j
   ) else (
      echo %%i
   )
)) > temp.tmp

move /Y temp.tmp "%textFile%"

关于batch-file - 使用批处理修改 .properties 文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319538/

相关文章:

batch-file - 在批处理文件中,如何从同一目录执行 .vbs?我如何获取参数?

r - 从 Windows 终端安装 R & RTools

Grails:如何在 cmd 控制台中打印?

python - 为什么我不能插入 Python 列表?

mysql - MyBatis-Spring 插入对象列表并检索它们的新 ID

batch-file - 如何在批处理文件中请求管理员访问权限

windows - 使用 "ren"在 cmd 中更改文件名

java - Windows - 在Java程序中使用set和echo

windows - 在 Windows 中将多个文件的前缀重命名或删除为每个文件的编号

mysql - 在 MYSQL 的 Insert 语句中使用 Replace 子句