Batch file 要在文本文件中使用用户输入的值以特定行号更新的批处理脚本

Batch file 要在文本文件中使用用户输入的值以特定行号更新的批处理脚本,batch-file,Batch File,我正在编写批处理脚本,需要从中更新特定行中的文本文件。 例如:在文本文件中,第30行写着“080-22368865仓库”, 当用户以“022-26986528”的形式运行脚本后在命令提示符中输入时,脚本只需更改“080-22368865”,而不必更改仓库 然后,文本文件中的第30行中应显示“022-26986528仓库” 提前感谢。您的问题遗漏了几个细节,因此下面的批处理文件只是一个起点。行号在第一个参数中给出 @echo off setlocal EnableDelayedExpansion

我正在编写批处理脚本,需要从中更新特定行中的文本文件。 例如:在文本文件中,第30行写着“080-22368865仓库”, 当用户以“022-26986528”的形式运行脚本后在命令提示符中输入时,脚本只需更改“080-22368865”,而不必更改仓库 然后,文本文件中的第30行中应显示“022-26986528仓库”


提前感谢。

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

@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
@echo关闭
setlocal EnableDelayedExpansion
调用:编辑行%1output.txt
后藤:EOF
:编辑行编号
设置/A跳过项=%1-1
如果%skipLines%gtr 0(
rem复制目标之前的行
对于(1,1,%skipplines%)中的/L%%i,请执行以下操作(
设定线=
设定/付款行=
回声(!线!
)
)
rem编辑目标行
设定线=
设定/付款行=
回显行%1:“!行!”
对于(“!line!”)中的/F“tokens=1*”%%a,请执行以下操作(
set/P firstToken=为“%%a”输入新值:
echo!firstToken!%%b
)
rem复制其余的行
:下一行
设定线=
设定/付款行=
如果未定义行退出/B
回声!线路!
转到下一行

如果目标行后有空行,则上一个程序将失败:复制过程将在该点停止。正如我之前所说,这和其他详细信息可以修复…

那么,您尝试了什么?发现了什么问题?如果您希望jst作为起点,请更精确地说明您的问题。这是Windows吗?总是相同的行号吗?如何解决在运行脚本后,您可以使用用户输入的内容进行更改吗?