从批处理脚本替换文本文件中的行

Posted

技术标签:

【中文标题】从批处理脚本替换文本文件中的行【英文标题】:Replace line in textfile from a Batch script 【发布时间】:2020-04-05 15:41:18 【问题描述】:

所以我有一个批处理脚本,它可以远程登录到交换机并在其上运行一些命令。 我每次都需要在文本文件中更改一行。这是IP地址的第5行。我该怎么做?

@echo off
set IP=""
:start

set /p IP="Enter IP Adress:"

    echo : IP is set to %IP%
    cd "C:\Program Files\PuTTY\"
    echo : Trying to connect to %IP%
    plink.exe -telnet %IP% < C:\Users\w0w40\Desktop\5ahitn\shruns\commands.txt

for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do set NetworkIP=%%a

pause
goto start

这是主要的批处理脚本,我需要替换 COMMANDS.txt 是

ITAC
enable
ITAC
copy running-config tftp:
10.51.11.75

我需要替换主批处理脚本中的ip地址

【问题讨论】:

用什么替换? 在主脚本中带有 NetworkIP 变量 IP 地址每次都会改变,所以我必须每次都更换它(学校网络) 【参考方案1】:

您不能用批处理替换文件中的某些内容。您必须重新创建整个文件。

首先删除最后一行。这很简单,因为它是唯一包含点的行:

find /v "." commands.txt > commands.tmp

然后将新行添加到新文件中:

>commands.tmp echo %NetworkIP%

并将其重命名为原始名称:

move /y commands.tmp commands.txt

【讨论】:

以上是关于从批处理脚本替换文本文件中的行的主要内容,如果未能解决你的问题,请参考以下文章

如何从批处理脚本中的文件路径中删除最后一个“\”

Bash:从脚本中查找并替换文本

替换从字符开始并以另一个字符结束的文本文件中的子字符串

如何使用Windows命令行环境查找和替换文件中的文本?

(shell脚本)特殊分隔符文本文件导入MongoDB

bat中替换中文字符串