Batch file 使用批处理文件;改为;“文本文件”;插入“;新行并保存在新文本文件中
我有一个*.txt文件,有几行,如下所示Batch file 使用批处理文件;改为;“文本文件”;插入“;新行并保存在新文本文件中,batch-file,text,insert,Batch File,Text,Insert,我有一个*.txt文件,有几行,如下所示 test1 A1 1 2 3 4 b2.13 C3.14 D63829 A0 B1.1 C1.2 Z1.3 H1 Z0 K2.3 A0 B1.2 C1.2 Z1.1 A0 B1.3 C1.4 Z1.5 ...... 我想要一个批处理文件,打开、读取并查找行“H1 Z0 K2.3”,然后插入两行新行,如 test1 A1 1 2 3 4 b2.13 C3.14 D63829 A0 B1.1 C1.2 Z1.3
test1
A1 1 2 3 4
b2.13
C3.14
D63829
A0 B1.1 C1.2 Z1.3
H1 Z0 K2.3
A0 B1.2 C1.2 Z1.1
A0 B1.3 C1.4 Z1.5
......
我想要一个批处理文件,打开、读取并查找行“H1 Z0 K2.3”,然后插入两行新行,如
test1
A1 1 2 3 4
b2.13
C3.14
D63829
A0 B1.1 C1.2 Z1.3
H1 Z0 K2.3
T20
T19
A0 B1.2 C1.2 Z1.1
A0 B1.3 C1.4 Z1.5
......
的确,我编写了以下代码,但它不起作用!任何帮助都将不胜感激
@ECHO OFF
::set SrcFolder=c:\test
::set DstFolder=C:\test1
set inputfile=C:\Users\old.txt
set outputfile=C:\Users\new.txt
for %%a in ("%inputFile%") do (
(for /f "usebackq delims=" %%h in ("%%a") do (
if "%%h" equ "H1 Z0 K2.3 " (
echo T20
echo T19
) else (
echo.%%h
)
))>"%outputfile%\%%~nxa"
)
ECHO.
ECHO Done!
我相信Aacini解决了代码中的小问题,并简化了代码 但我几乎不再使用FOR/F来修改文本文件。我发现这是不必要的复杂和缓慢。相反,我使用它对stdin执行正则表达式搜索和替换,并将结果写入stdout。这是一个纯脚本,可以在XP以上的任何现代Windows机器上本机运行。脚本中嵌入了完整的文档 将REPL.BAT与正则表达式一起使用:
type old.txt | repl "^H1 Z0 K2\.3 $" "$&\r\nT20\r\nT19" X >new.txt
或使用字符串文字:
type old.txt | repl "H1 Z0 K2.3 " "H1 Z0 K2.3 \r\nT20\r\nT19" LBEX >new.txt
对我来说,这个
设置outputfile=C:\Users\new.txt
和这个%outputfile%\%%nxa“
”似乎“不太兼容”。什么是C:\Users\new.txt
文件还是文件夹?你忘了在标题的引号中加上“save”一词<代码>;-)代码>亲爱的dbenham,感谢您的宝贵意见。“REPL”很有用,你能给我一个提示吗;如果我想在文本文件中的字符串之前插入一行文本(比如T20),我应该怎么做?
type old.txt | repl "H1 Z0 K2.3 " "H1 Z0 K2.3 \r\nT20\r\nT19" LBEX >new.txt