批量在每行中插入行号

时间:2019-02-07 13:52:44

标签: batch-file findstr

我有一个小问题,现在无法上车。 我想批量导入.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

有人有想法吗? 预先感谢!

2 个答案:

答案 0 :(得分:0)

此版本将从test.txt写入test2.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

答案 1 :(得分: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

请注意,在行号后的冒号后没有插入 SPACE

相关问题