如何在批处理文件的文本文件中指定一行文本


1

我想知道我是否可以告诉计算机在带有批处理文件的文本文件上执行命令,但是我想指定要修改的行。

我还没有任何代码,如果您能给出详细解释,我将不胜感激。

当我得到这个命令时,我打算用它来删除或写入那条确切的行,而不是覆盖另一行。


批处理文件本身对于文本操作来说非常可怕。你不喜欢使用像sed或awk或powershell这样的东西吗?
Journeyman Geek

我不知道'sed,awk或powershell'是什么,但如果你指的是编程语言,那么没有。
Zacyboy11

Answers:


1

通过Windows命令提示符执行此操作比实际操作更有趣,但它是可能的。您可以使用 for /f 一次只能查看一行文件,但我知道跟踪当前行并不是一件容易的事。以下代码使用对子例程的调用来手动计算行数。使用文件名,要替换的行号和替换字符串来调用批处理文件。

@echo off
set filename=%1
set targetline=%2
set message=%3
set n=0
for /F "tokens=*" %%i in (%filename%) do call :write %%i
exit /b 0

:write
set /a n+=1
if %n%==%targetline% (echo %message%) else echo %*
exit /b 0

样本输出 replace.bat somelines.txt 3 "Hello, world!"

first line
second line
"Hello, world!"
fourth line

Cool thanx,所以通过使用for / f我可以设置要使用的线路。
Zacyboy11

0

适用于Windows的Sed 将允许您对文本文件执行面向行的操作:

Sed(流编辑器)实际上不是真正的文本编辑器或文本   处理器。相反,它用于过滤文本,即它需要文本   输入并对其执行一些操作(或操作集)   输出修改后的文本。 Sed通常用于提取部分   使用模式匹配或替换多次出现的文件   一个文件中的字符串。


我怎么用sed?
Zacyboy11

这一切都取决于你在做什么。我建议你找到一个很好的教程和一个坚固的参考,因为sed是使用中最大的文本操作工具之一,甚至有它的传递知识是有用的。
Ignacio Vazquez-Abrams

你有什么建议我搜索谷歌以获得一个很好的参考?
Zacyboy11

我从来没听说过 :(
Zacyboy11

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.