我有一个* .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
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!
答案 0 :(得分:1)
@ECHO OFF
setlocal
::set SrcFolder=c:\test
::set DstFolder=C:\test1
set inputfile=C:\Users\old.txt
set outputfile=C:\Users\new.txt
(for /F "usebackq delims=" %%a in ("%inputFile%") do (
echo %%a
if "%%a" equ "H1 Z0 K2.3 " (
echo T20
echo T19
)
)) > "%outputfile%"
ECHO/
ECHO Done!
答案 1 :(得分:0)
我相信Aacini解决了您的代码中的小问题,并简化了它。
但我几乎从不使用FOR / F来修改文本文件。我发现它是不必要的复杂和缓慢。相反,我使用REPL.BAT - a hybrid JScript/batch utility执行正则表达式搜索并替换stdin并将结果写入stdout。它是纯粹的脚本,可以在任何现代Windows机器上从XP向上运行。完整的文档嵌入在脚本中。
将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