批处理脚本,用于在同一.ini文件中的多个服务中查找和替换相同的字符串

时间:2015-10-29 14:53:19

标签: batch-file

我需要在.ini文件中查找并替换ip地址。我之前的问题中的问题是我只需要更改服务中的一个IP地址。现在,我在同一.ini文件下的不同服务名称中有相同的文本变量。以下是详细信息。

我有以下内容。

SERVICE_NAME=Test1 
SERVICE_L2TP_PEER_IPADDRESS=1.1.1.1 
SERVICE_Name=Test2 
SERVICE_L2TP_PEER_IPADDRESS=2.2.2.2 

它是相同的模式,但在同一文件中有不同的服务名称。该脚本将定位上面的值,并将1.1.1.1更改为7.7.7.7和2.2.2.2更改为8.8.8.8。我需要一些关于如何定义要选择的服务的帮助,因为两个文本变量都是相同的。

以下是我以前用过的帖子。

Batch script that will allow to search a particular IP and change it to a new IP address in a .ini file

1 个答案:

答案 0 :(得分:1)

这将完成这项工作。

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET iniFile=some.ini
TYPE NUL>temp_file.ini
FOR /F "tokens=*" %%L IN (%iniFile%) DO (
    SET currentLine=%%L
    REM ECHO !currentLine:~0,28!
    IF "!currentLine:~0,28!"=="SERVICE_L2TP_PEER_IPADDRESS=" (
        SET currentLine=!currentLine:1.1.1.1=7.7.7.7!
        SET currentLine=!currentLine:2.2.2.2=8.8.8.8!
    )
    ECHO !currentLine!>>temp_file.ini
)
MOVE /Y temp_file.ini %iniFile%

您必须使用ini文件的正确路径和文件名替换some.ini