搜索文本文件并在使用批处理文件找到特定字符串时附加它

Search text file and append it when specific string is found using batch file

我有一个文本文件,我正试图通过批处理脚本对其进行编辑。 具体来说,该文件包含一个参数列表,我试图在其中一个参数(字符串)之后添加一个路径(字符串)。

为此,我编写了下面的脚本,该脚本应该

在我的例子中,我在文件中查找的参数是“图像”。

不幸的是,虽然这里的主要问题可能是我很笨,但我一直无法弄清楚为什么它不起作用,非常感谢您的帮助。

代码如下:

@setlocal enableextensions enabledelayedexpansion
@echo off

push %~dp0
set "path=%UserProfile%"

REM iterate through each line of given txt file
for /F "delims="%%G in (settings.txt) do (
    set line =%%G
    if not x%line:image=%==x%line% set "newline=%line%%path%

    echo !newline! >> newFile.txt
)
popd
pause
exit /b 0

为了参考,我自己根据this page写了我的代码。

提前致谢

由于您提供的代码存在几个问题,下面是我预期的示例:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "fileIn=%~dp0settings.txt"
Set "strGet=image"
Set "strAdd=%UserProfile%"
Set "fileOut=%~dp0newFile.txt"

(
    For /F Delims^=^ EOL^= %%G In (
        '""%__AppDir__%find.exe" /V /N "" 0< "%fileIn%" 2> NUL"'
    ) Do (
        Set "strLine=%%G"
        SetLocal EnableDelayedExpansion
        If /I Not "!strLine:%strGet%=!" == "!strLine!" (
            Echo=!strLine:*]=!%strAdd%
        ) Else Echo=!strLine:*]=!
        EndLocal
    )
) 1> "%fileOut%"

我不打算解释它是如何工作的,为了找出答案,您应该尝试一个命令一个命令地完成它,利用它们各自的帮助输出。您唯一需要修改的是分别位于 4..7 行的四个变量定义。 请注意,变量扩展和子字符串替换不适用于您想放在 %strGet% 中的任何内容,它有局限性!