如何在WindowsXP上使用批处理文件向文本文件添加行号

塔马斯

我已尽一切努力,但无法使用批处理文件对文本文件中的行进行编号。我是新手,想通过单击bat文件来创建带有批处理文件的CNC程序。我成功创建了cnc程序(这是一个文本文件,如下所示),但是无法给它提供行号。在此示例中,行数是不同的,并非总是10。

我需要的是:

BEGIN PGM OM11 MM 
CALL LBL 101
M323
CYCL DEF 247 DEF. ZERO PEZZO Q339=+1  ; NUMERO ORIGINE
CALL PGM TNC:\master\master-1\001 hdh code masolata.H
CALL PGM TNC:\master\master-1\002 hdh code msolata msolata.h
CALL PGM TNC:\master\master-1\003 hdh code1.H
CALL PGM TNC:\master\master-1\004 hdh code2.h
;
M323
END PGM OM11 MM

对此:

0  BEGIN PGM OM11 MM 
1  CALL LBL 101
2  M323
3  CYCL DEF 247 DEF. ZERO PEZZO Q339=+1  ; NUMERO ORIGINE
4  CALL PGM TNC:\master\master-1\001 hdh code masolata.H
5  CALL PGM TNC:\master\master-1\002 hdh code msolata msolata.h
6  CALL PGM TNC:\master\master-1\003 hdh code1.H
7  CALL PGM TNC:\master\master-1\004 hdh code2.h
8  ;
9  M323
10  END PGM OM11 MM
莫菲

一个批处理文件解决方案是这样的:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "FileName=File.cnc"
if not exist "%FileName%" endlocal & goto :EOF

set "LineNumber=0"
set "TempFile=%TEMP%\%~n0.tmp"
del "%TempFile%" 2>nul

for /F "usebackq eol=| delims=" %%I in ("%FileName%") do (
    echo !LineNumber! %%I>>"%TempFile%"
    set /A LineNumber+=1
)

move /Y "%TempFile%" "%FileName%"
if errorlevel 1 del "%TempFile%"
endlocal

但是此批处理代码存在一些问题:

  1. 用此代码更新的带有^!不正确的
  2. |该代码忽略以开头的行选项字符串eol=|确定行尾字符,默认情况下;这是使用其他字符的原因,例如,|由于行开头的分号明显存在于要修改的文件中,因此这是原因
  3. 空行完全FOR忽略

优点是此解决方案比下一个解决方案快:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "FileName=File.cnc"
if not exist "%FileName%" endlocal & goto :EOF

set "LineNumber=0"
set "TempFile=%TEMP%\%~n0.tmp"
del "%TempFile%" 2>nul

for /F "usebackq eol=| delims=" %%I in ("%FileName%") do (
    set "Line=%%I"
    setlocal EnableDelayedExpansion
    echo !LineNumber! !Line!>>"%TempFile%"
    endlocal
    set /A LineNumber+=1
)

move /Y "%TempFile%" "%FileName%"
if errorlevel 1 del "%TempFile%"
endlocal

请阅读此答案,以获取有关setlocalendlocal解释为什么使用FOR循环中的这两个命令第二种解决方案速度较慢的详细信息

与第一批代码相比,这种较慢的解决方案可以处理^并且!行正确。

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • del /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • move /?
  • set /?
  • setlocal /?

另请阅读Microsoft有关使用命令重定向运算符的文章,获取有关>>的说明2>nul

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Windows批处理文件循环浏览文本文件中的每一行?

如何从批处理文件创建空文本文件?

在函数式编程(F#)中如何在文本文件中添加行号?

如何在Windows批处理文件中嵌入文本文件

如何使用Windows批处理文件拆分文本文件元素?

在批处理文件中向文本文件添加迭代

批处理文件:合并文本文件中的同名文本文件

如何使用批处理文件有选择地删除文本文件中的文本?

使用文本文件重命名文件夹中的批处理文件

如何在批处理文件上使用命令FOR获取文本文件的内容

如何在批处理文件中添加文本?

如何通过批处理文件从文本文件中删除不需要的行?

如何从批处理文件的文本文件中的行中删除多余的逗号?

如何使用批处理文件执行在腻子上的文本文件中保存的Unix命令

使用批处理文件编辑文本文件

如何添加行号,后跟制表符到文本文件

如何在添加行时读取文本文件

如何使用批处理文件将文本添加到多个文本文件的开头?

批处理文件以从文本文件读取行

如何在文本文件的每一行前添加行号和制表符?

如何在给定的批处理文件中放置循环以生成输出文本文件

如何在批处理文件中打印多个文本文件

如何使用Windows批处理文件从文本文件中的文件列表中递归复制文件?

如何使用Windows批处理文件解析包含本地变量的文本文件中的字符串?

在文本文件上查找字符串-批处理文件

xcopy 文本文件为数据添加空间 - CMD 批处理文件

批处理文件为文本文件中的特定位置添加数字

如何在文本文件中使用批处理文件变量?

在批处理文件中使用powershell从文本文件中添加浮点数