用于替换.ini中的行的批处理脚本

时间:2013-07-23 02:36:29

标签: batch-file

请原谅。我是一个完整的菜鸟。

我有1个ini文件,只有1个IP地址和版本号。格式为:

xxx.xxx.xxx.xxx
abcde 

我需要容纳3个总IP。 我正在寻找一个批处理脚本,它会询问用户他们想要连接的位置(每个位置都对应一个IP地址)。

  

例如:NY = 10.0.0.0 DC = 20.0.0.0 LA = 30.0.0.0

批次会说“你想在哪里连接?1 = NY,2 = DC,3 = LA” 当用户为“NY”选择1时,脚本将搜索.ini文件(始终位于相同位置c:\ sample)并将IP更改为正确的文件(10.0.0.0)。 它的输出会有“你现在已经连接到纽约了!”

当用户选择“DC”时,脚本将搜索.ini文件并将其更改为20.0.0.0等。我能够做一个简单的查找/替换脚本,但只有2个IP,我有为每个位置制作一个相当不方便的地方。

非常感谢任何帮助或指导!

2 个答案:

答案 0 :(得分:1)

这个例子将:

  1. 要求用户输入NY,DC或LA;
  2. 创建x.tmp,它是x.ini的副本,用参数替换所有xxx.xxx ...
  3. 用x.tmp;
  4. 替换exisitng x.ini

    代码:

    @Echo Off
    
    :Begin
    If Exist c:\sample\x.tmp Del c:\sample\x.tmp
    Set /P "var=Choose location (NY, DC, LA):"
    If /I "%var%"=="NY" Call :ReplaceIP 10.0.0.0
    If /I "%var%"=="DC" Call :ReplaceIP 20.0.0.0
    If /I "%var%"=="LA" Call :ReplaceIP 30.0.0.0
    If Exist c:\sample\x.tmp (
        Move /Y c:\sample\x.tmp c:\sample\x.ini 1>Nul
        Echo Success!
    ) Else (
        Echo Invalid option!
    )
    Pause
    GoTo :Begin
    
    :ReplaceIP
    For /F "Tokens=1,2,3,4 Delims=." %%i In (c:\sample\x.ini) do If %%j.==. (
        Echo %%i >> c:\sample\x.tmp
    ) Else (
        Echo %1 >> c:\sample\x.tmp
    )
    GoTo :EOF
    

答案 1 :(得分:0)

这应该会帮助你。

@echo off
set "var="
set /p "var=Enter 1 for NY, 2 for DC or 3 for LA"
if "%var%" EQU 1 (
  >c:\sample\file.ini echo 10.0.0.0
  >>c:\sample\file.ini abcde
  )
if "%var%" EQU 2 (
  >c:\sample\file.ini echo 20.0.0.0
  >>c:\sample\file.ini abcde
  )
if "%var%" EQU 3 (
  >c:\sample\file.ini echo 30.0.0.0
  >>c:\sample\file.ini abcde
  )
echo Good luck - I hope you entered the right number! :)