2012-08-06 223 views
0

我有一個配置文件,該文件是像 mach.conf批處理腳本來處理文件

Machine_IP = <IP Address> 
Machine_Name = <Machine name> 
User_Name = <UID> 
ERRORCODE = 8000 
.. 

同樣。我是windows批處理腳本的新手,儘管我已經在互聯網上閱讀了批處理腳本,並且能夠理解編寫簡單的批處理腳本。但沒有找到處理文件使用批處理腳本,如我想讀取配置文件,如果我看到ERRORCODE = 8000 做一個更改,並用8001替換8000.

如何使用批處理腳本來做到這一點。請提供我的鏈接或一些提示。

謝謝...

回答

1

我添加一些代碼可能不是必要的,但允許程序操作不帶引號的<的和>的。它所做的就是前掛起一個^給他們,所以<成爲^<>成爲^>

@echo off 
setlocal enabledelayedexpansion 
if exist config.tmp del config.tmp 
for /f "tokens=1* delims== " %%x in (config.cnf) do call :processFile "%%x" "%%y" 
move config.tmp config.cnf > nul 
echo File Updated 
endlocal 
goto :eof 

:processFile 
set "Var=%~1" 
set "Val=%~2" 

:: Add Escape Code to the greater-than and less-than symbols so they don't 
:: act as pipes and create errors. 
set "Var=%Var:<=^<%" 
set "Var=%Var:>=^>%" 
set "Val=%Val:<=^<%" 
set "Val=%Val:>=^>%" 

if "%Var%"=="ERRORCODE" set /a Val=%Val% + 1 

echo %Var% = %Val%>> config.tmp 
+0

+1,爲什麼你只處理'<>'但也'&|「^' – jeb 2012-08-29 07:55:21

+0

@jeb原因有幾個1)'<>包含在由OP提供的僞數據'? ,但我懷疑它是在實際的數據中2)你應該能夠推斷出如何從我的例子中自己做到這一點3)增加它們會有更多的工作4)我懷疑這些字符中的任何一個在實際的配置文件中,所以它會是一個不必要的複雜和從實際問題中分散注意力的問題,因爲我已經給出的例子組成了將近1/3的代碼,每個額外的字符需要兩行代碼。 – 2012-08-29 14:29:36