2013-07-23 28 views
0

请原谅。我是一个完整的noob。批处理脚本替换.ini中的行

我有1个ini文件,只有1个IP地址和版本number.in这种格式:

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,而我必须为每个位置制作一个相当不方便的位置。

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

+0

批量怎么会知道,什么IP为如。纽约? – Endoro

+0

你的意思是一个文本文件? INI文件通常有'[sections]'和'key = value' –

回答

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! :) 
1

这个例子将:

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

代码:

@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 
+0

这真棒!当用户选择一个位置并提示“按下任意键继续...”,按键会再次提示“选择位置”时,是否可能产生“成功信息”?我真的很感谢大家的帮助... – brasqo

+0

我是否独自完成所有工作? –

+0

更改完成。不要忘记发出正确的答案。 –