我需要创建一个批处理文件,使用它我们可以修改文件的内容。
例如
Testing.txt 文件包含一行
描述=MAN_Human
改成
描述=MAN_Human_V2
仅在 MAN 末尾添加 (_V2)
因此,当我们打开文件时,我们会看到描述名称 MAN_Human_V2 而不是 MAN。
我有多个文件要处理。请帮忙。
你可以通过使用来做到这一点for
循环遍历文件的每一行,当找到带有“描述”的行时,将“_V2”附加到输出中。
@echo off
for %%f in (*.txt) do (
for /f "tokens=1* delims=:" %%g in ('type "%%f" ^| findstr /n /v "BoGuSsTrInG"') do (
if "%%hx"=="x" (
echo.>>"%%~nf.newtxt"
) else (
for /f "tokens=1* delims==" %%i in ('echo.%%h') do (
if "%%i"=="Description" (
echo.%%i=%%j_V2>>"%%~nf.newtxt"
) else (
if "%%jx"=="x" (
echo.%%i>>"%%~nf.newtxt"
) else (
echo.%%i=%%j>>"%%~nf.newtxt"
)
)
)
)
)
)
ren *.txt *.oldtxt
ren *.newtxt *.txt
当然,你必须在处理时将内容输出到一个新文件中test.txt
文件。然后用新创建的文件替换原始文件......
Edit #1
您必须将 TXT 文件的内容完全复制到新文件中,然后才能将其中任何文件重命名回原来的名称。这是因为for
如果您立即重命名它们,循环将在修改它们后再次拾取它们,其中一些将获得_V2
附加了几次。
我没有删除.oldtxt
文件放在最后,因为在您知道该过程有效之前,您不应该销毁原始文件!
Edit #2
我发现有一种解决方法可以保留空白行。解决方法将文本文件的内容通过管道传输到findstr
,搜索所有不包含的行BoGuSsTrInG
。输出包括行号(让它打印空行的唯一方法)。行号后面有一个冒号 (:
),因此我们可以将输出划分为不同的变量,并在冒号上分割内容。这tokens=1*
将行号拆分为%%g
变量,该行的结果位于%%h
多变的。我们可以测试%%h
查看它是否为空并向新文件添加一个空行。否则,我们处理%%h
像之前一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)