batch-file - 搜索文本文件并在使用批处理文件找到特定字符串时附加它
问题描述
我有一个文本文件,我正在尝试通过批处理脚本进行编辑。具体来说,该文件包含一个参数列表,我试图在其中一个参数(以及字符串)之后添加一个路径(字符串)。
为此,我编写了下面的脚本
- 遍历文件的每一行
- 如果该行包含我要查找的参数,则将参数和路径连接到一个新行中。
- 将所有内容(未更改和更改的行)输出到新的 txt 文件。
在我的情况下,我在文件中寻找的参数是“图像”。
不幸的是,虽然这里的主要问题可能是我很笨,但我一直无法弄清楚为什么它不起作用,非常感谢一些帮助。
这是代码:
@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
作为参考,我基于这个页面来编写我的代码。
提前致谢
解决方案
由于您提供的代码存在几个问题,以下是我期望它的外观示例:
@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%
,它有限制!
推荐阅读
- python - RRuntimeError: qr.lm(object) 中的错误:lm 对象没有正确的“qr”组件。排名为零或不应该使用 lm(.., qr=FALSE)
- reactjs - Uncaught (in promise) SyntaxError: 位置 0 处 JSON 中的意外标记 U
- javascript - 检查数组中的对象是否包含相等的属性
- regex - 在 apache 重写规则中替换 URL 中的一组字符
- go - vim-go 语法高亮对于自定义类型不能始终如一地工作
- javascript - 如何将原始元素类型的数组从 JavaScript 快速传递到 Rust 中的 wasm?
- firebase - 如何以编程方式形成 Firestore 查询?
- laravel - 将数组转换为集合 laravel
- java - CompletableFuture 总是抛出超时异常
- scala - 在我的本地机器上执行时尝试使用 Spark 和 Scala 创建决策树时出现 Task not Serializable 错误