首页 > 解决方案 > 搜索文本文件并在使用批处理文件找到特定字符串时附加它

问题描述

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

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

在我的情况下,我在文件中寻找的参数是“图像”。

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

这是代码:

@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

作为参考,我基于这个页面来编写我的代码。

提前致谢

标签: batch-fileappendtext-files

解决方案


由于您提供的代码存在几个问题,以下是我期望它的外观示例:

@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%,它有限制!


推荐阅读