批量在每一行插入行号
Batch Insert the line number in each line
我有点问题,现在无法继续。
我想批量导入一个 .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
有人有想法吗?
提前致谢!
此版本将从 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
最简单的解决方案可能是使用 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
我有点问题,现在无法继续。 我想批量导入一个 .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
有人有想法吗? 提前致谢!
此版本将从 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
最简单的解决方案可能是使用 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