Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件;改为;“文本文件”;插入“;新行并保存在新文本文件中_Batch File_Text_Insert - Fatal编程技术网

Batch file 使用批处理文件;改为;“文本文件”;插入“;新行并保存在新文本文件中

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

我有一个*.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!

我相信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