2012-08-06 228 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