Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理替换属性文件中的字段值_Batch File_Command Line_Batch Processing - Fatal编程技术网

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