我该如何在批处理文件/命令提示符中为文本文件添加行号?
例如:
1 line1
2 line2
etc
我该如何在批处理文件/命令提示符中为文本文件添加行号?
例如:
1 line1
2 line2
etc
@echo off
set file=%1
set x=1
for /f "delims=|" %%i in (%file%) do (
echo %x% %%i
set /a x=%x%+1
)
for
循环内的set
不起作用(因为我们在糟糕的DOS中)。
将set
替换为调用另一个批处理文件来执行增量和设置x
也不起作用。
补充说明
好的,加上@indiv建议的修复方法,我们得到了这个(似乎可以正常工作):
@echo off
set file=%1
set x=1
setlocal EnableDelayedExpansion
for /f "delims=|" %%i in (%file%) do (
echo !x! %%i
set /a x=!x!+1
)
for
循环中使用set
的方法请参考help set
(靠近末尾位置)。您需要在脚本中添加setlocal EnableDelayedExpansion
,然后对于您想要在运行时而不是解析时展开的变量,您需要用!
而不是%
来包围它们。此外,请注意您不是在DOS中,而是在Windows命令 shell中。 - indiv所有的方法都太复杂了,让我们来试试这个。对于Windows XP及更高版本(我们需要findstr),以下是在命令行或批处理中添加行号到输入文件的全部步骤,就像OP想要的那样...
type "in.txt"|findstr/n ^^ > "out.txt"