我正在编写批处理脚本,我需要从中更新特定行中的文本文件。例如:在文本文件第 30 行中显示“080-22368865 Ware house”,脚本只需要更改“080-22368865”而不是仓库,因为用户在运行脚本后在命令提示符中输入“022- 26986528”然后在文本文件中的第 30 行应该显示“022-26986528 ware-house”。
提前致谢。
我正在编写批处理脚本,我需要从中更新特定行中的文本文件。例如:在文本文件第 30 行中显示“080-22368865 Ware house”,脚本只需要更改“080-22368865”而不是仓库,因为用户在运行脚本后在命令提示符中输入“022- 26986528”然后在文本文件中的第 30 行应该显示“022-26986528 ware-house”。
提前致谢。
您的问题遗漏了几个细节,因此下面的批处理文件只是一个起点。行号在第一个参数中给出。
@echo off
setlocal EnableDelayedExpansion
call :editLine %1 < input.txt > output.txt
goto :EOF
:editLine num
set /A skipLines=%1-1
if %skipLines% gtr 0 (
rem Copy lines before the target
for /L %%i in (1,1,%skipLines%) do (
set line=
set /P line=
echo(!line!
)
)
rem Edit the target line
set line=
set /P line=
echo Line %1: "!line!"
for /F "tokens=1*" %%a in ("!line!") do (
set /P firstToken=Enter new value for "%%a":
echo !firstToken! %%b
)
rem Copy the rest of lines
:nextLine
set line=
set /P line=
if not defined line exit /B
echo !line!
goto nextLine
如果目标行之后有空行,则先前的程序将失败:复制过程在该点停止。正如我之前所说,这个和其他细节可以修复......