批量插入在每一行的行号

问题描述 投票:1回答:2

我有一个小问题,无法得到正确的现在。我想批量导入.txt文件和输出该行号到另一个.TXT。例如,test.txt文件看起来是这样的:

hello
how 
are 
you

结果应该是该文件的test2.txt,看起来像这样:

1: hello
2: how
3: are
4: you

我曾尝试以下批处理但不幸的是,我只得到一个空文件作为输出:

@echo off
setlocal enabledelayedexpansion
findstr / n; test.txt >test2.txt

有没有人有一个想法?提前致谢!

batch-file findstr
2个回答
0
投票

这个版本将会写入从test.txttest2.txt

@echo off
setlocal enabledelayedexpansion

set "myfile=test.txt"
set "outputfile=test2.txt"

for /f "tokens=*" %%a in ('type "%myfile%" ^| find /v /n "" ^& break ^> "%myfile%"') do (
     set "str=%%a
     set "str=!str:]=: !"
     set "str=!str:[=!"
     >>%outputfile% echo(!str!
  )

这个版本将写回原来的文件,test.txt和写回test.txt,从而覆盖它:

@echo off
setlocal enabledelayedexpansion

set "myfile=test.txt"

for /f "tokens=*" %%a in ('type "%myfile%" ^| find /v /n "" ^& break ^> "%myfile%"') do (
     set "str=%%a
     set "str=!str:]=: !"
     set "str=!str:[=!"
     >>%myfile% echo(!str!
  )

这将做你想要什么:

1: hello
2: how 
3: are 
4: you

请注意,这也将编号\n换句话说,新的空行。因此,举例来说,如果您有:

hello

how 
are 
you

这将导致:

1: hello
2:
3: how 
4: are 
5: you

0
投票

最简单的解决办法可能是使用findstr,就像这样:

findstr /N "^" "test.txt" > "test_NEW.txt"

上面的命令行关于空行。要忽略并删除它们,这样做:

findstr /N /V "^$" "test.txt" > "test_NEW.txt"

要替换原来的文件只是事后执行以下操作:

move /Y "test_NEW.txt" "test.txt" > nul

把不存在的空间,如下行号冒号后面插入。

© www.soinside.com 2019 - 2024. All rights reserved.