2013-07-23 26 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

更改完成。不要忘記發出正確的答案。 –