Batch file 使用批处理替换属性文件中的字段值
有人能帮我用批处理替换属性文件中的字段值吗 我在我的Batch file 使用批处理替换属性文件中的字段值,batch-file,command-line,batch-processing,Batch File,Command Line,Batch Processing,有人能帮我用批处理替换属性文件中的字段值吗 我在我的应用程序.properties文件中有这个字段:accessKey=AKIAJ2Q我想用accessKey=XXXXX 我按照建议尝试使用sed命令,但没有成功。windows 10无法识别send命令 我还尝试了以下代码: SET key="XXXXX" FOR /F %i IN (application.properties) DO SET accessKey=%key% pause 任何帮助都将不胜感激 谢谢用纯批处理无法“替换”文本文
应用程序.properties
文件中有这个字段:accessKey=AKIAJ2Q
我想用accessKey=XXXXX
我按照建议尝试使用sed命令,但没有成功。windows 10无法识别send命令
我还尝试了以下代码:
SET key="XXXXX"
FOR /F %i IN (application.properties) DO SET accessKey=%key%
pause
任何帮助都将不胜感激
谢谢用纯批处理无法“替换”文本文件中的某些内容。您可以使用第三方工具,如Find'n'Replace,甚至一些PowerShell命令。但是您可以做的是将文本文件“复制”到临时文件中,同时替换您正在寻找的令牌。之后,您可以删除原始文件并将其替换为临时文件。代码如下:
@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%
当然有一种方法可以使用纯批处理替换txt/properties文件中的字符串 以上面的示例替换application.properties中的accessKey 文件
@ECHO关闭
SETLOCAL
设置“sourcedir=C:\”
(
对于/f“usebackqdelims=“%”中的%%a(“%sourcedir%\application.properties”)执行以下操作(
对于/f“tokens=1*delims==”%%g IN(“%%a”)DO(
如果/i“%%g”==“accessKey”(
回声(%%g=xxxx
)否则(
回声(%%a)
)
)
)>新特性的应用
::此新文件现在包含已修改的版本。
rem ECHO(移动/y应用程序\u新的.properties“%sourcedir%\application.properties”
后藤:EOF
Thank you@MichaelS的回答可能重复。我是用PowerShell命令完成的:键入application.properties | PowerShell-command“$input | ForEach Object{$\uu-替换\“AKIAJ2Q\”,\“XXXXX\”>application1.properties
@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