用于在用户输入的值中在特定行号中更新文本文件的批处理脚本

时间:2012-11-10 13:43:35

标签: batch-file

我正在编写批处理脚本,我需要更新特定行中的文本文件。 例如:在文本文件中行号30说“080-22368865 Ware house”, 脚本必须仅更改“080-22368865”而不是更改仓库,因为用户在运行脚本后输入命令提示符为“022-26986528” 然后在文本文件中,它应该在第30行显示“022-26986528 ware-house”。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您的问题遗漏了几个细节,因此下面的批处理文件只是一个起点。行号在第一个参数中给出。

@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

如果目标行后面有一个空行,则上一个程序将失败:复制过程在此时停止。正如我之前所说,这个和其他细节可以修复......