使用批处理替换属性文件中的字段值

时间:2015-12-16 10:57:15

标签: batch-file command-line batch-processing

任何人都可以帮助我使用批处理替换属性文件中的字段值。

我的application.properties文件中包含此字段:accessKey=AKIAJ2Q我希望将其替换为accessKey=XXXXX

我尝试使用sed命令作为推荐here,但它没有用。 Windows 10无法识别send命令。

我还尝试了以下代码:

SET key="XXXXX"
FOR /F %i IN (application.properties) DO SET accessKey=%key%
pause

任何帮助都将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

肯定有一种使用纯批处理替换txt / properties文件中的字符串的方法。

以上面的示例替换application.properties中的accessKey 文件。

@ECHO OFF
SETLOCAL
SET "sourcedir=C:\<Add directory path of application.properties>"
(
 FOR /f "usebackqdelims=" %%a IN ("%sourcedir%\application.properties") DO (
  FOR /f "tokens=1*delims==" %%g IN ("%%a") DO (
   IF /i "%%g"=="accessKey" (
      ECHO(%%g=xxxx
    ) ELSE (
      ECHO(%%a)
  )
 )
)>application_new.properties
:: This new file now contains a modified version.

rem ECHO(MOVE /y application_new.properties "%sourcedir%\application.properties"

GOTO :EOF

答案 1 :(得分:0)

没有办法&#34;替换&#34;纯批处理文本文件中的内容。您可以使用第三方工具,例如Find&#39; n&#39;替换甚至一些PowerShell命令。但你可以做的是&#34;复制&#34;替换您要查找的令牌时,将文本文件转换为临时文件。之后,您可以删除原始文件并将其替换为临时文件。这是代码:

@echo off
setlocal enabledelayedexpansion
set sourcefile=something.txt
set tempfile=tempfile.txt
set oldtoken=AKIAJ2Q
set newtoken=XXXXX
type nul>%tempfile%
for /f "tokens=*" %%l in (%sourcefile%) do (
    set line=%%l
    set line=!line:%oldtoken%=%newtoken%!
    echo !line!>>tempfile.txt
)
del %sourcefile%
move %tempfile% %sourcefile%