想象一下,以下数字组成一个名为" dog.txt"的文本文件。
116267
831256个
876825个
687123
如何使用批处理代码仅更改这些字母中的少数几个?例如,如果我只想改变" 2"到了" U"在第一行,我如何选择该特定数字并进行更改?这些数字纯属占位符,除了他们所处的位置之外没有任何意义 - 我想让他们像棋盘一样被选中,它来自AH,1-8,而不是只需选择所有两个并将它们变成U.
TL; DR:把它变成这个
116U67
831256个
876825个
687123
答案 0 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q42982193.txt"
SET "outfile=%destdir%\outfile.txt"
(
SET /a col=%2+1
FOR /f "tokens=1*delims=:" %%a IN ('findstr /n /r "." "%filename1%"') DO (
IF %%a equ %1 (
SETLOCAL ENABLEDELAYEDEXPANSION
SET "line=:%%b"
SET "line=!line:~0,%2!%3!line:~%col%!"
ECHO !line:~1!
ENDLOCAL
) ELSE ECHO %%b
)
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q42982193.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件给定参数 row column replacementchar 然后只需使用findstr
读取文件并为每行编号,然后将行#分配给%%a
,将行内容分配给%%b
}。
如果行号与参数列表中的所需数字不匹配,请重新排回该行。
如果匹配,则在其前面加上冒号(或任何其他字符),以便string-start从1开始,然后选择该行的相应部分,用替换字符将它们串起来并输出结果,删除第一个角色。