【发布时间】:2017-07-31 12:38:22
【问题描述】:
任务很简单,从文件“input.txt”中获取输入,该文件包含需要在源文件“source.txt”中替换的关键字,并使用关键字名称创建新文件。您能否提出问题所在。
@echo off &setlocal
setlocal enableextensions disabledelayedexpansion
set "search=POP"
set "source=dev500_ABC_eu.env"
for /f %%a in (input.txt) do (
set "replace=%%a"
set "newfile=devga520_%replace%_eu.env"
for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
)>"%newfile%"
)
在 input.txt 中,假设它有“PQR”。所以它应该用“PQR”替换文件中的“POP”,并且新文件应该生成名称为 dev500_PQR_eu.env
Input file.txt
line 1 --> PQR
line 2 --> XYX
line 3 --> NOB
line 4 --> BOB
预期输出:用输入文件文本替换字符“ABC”后的 4 个不同文件,例如:在哪里有“ABC”,它应该被 dev500_ABC_eu.env 中的 PQR 替换,并且新文件要用文本重命名。
dev500_PQR_eu.env --> replaced name and content as well by PQR.
dev500_XYX_eu.env
dev500_NOB_eu.env
dev500_BOB_eu.env
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
除非您使用delayed expansion,否则您不应使用临时变量
replace和newfile,只需声明%%a和devga520_%%a_eu.env,分别对应...... -
我已经尝试过了,但是也执行了第一个 for,结果只是在第二个 for 执行之后创建了最后一个文件。第一个 for 循环的执行应该为输入文本文件中没有发生的每个变量执行第二个 for 循环。有什么建议么。感谢您的帮助
标签: batch-file for-loop