2014-05-05 88 views
0

我需要通過批處理文件中傳遞的變量來更改TXT文件的內容。批處理文件傳遞變量並更改TXT文件

如下:

[00010001] 
Name = 192.168.1.141 
Port = 2046 
[GER] 
Port=1 
Speed=19200 
SAM=2 

我需要改變第3行

批處理文件

@echo off 
setlocal=enabledelayedexpansion 
set "nfilial=" 
set /p "nfilial=Numero do Filial (4 Digitos):" 
set "pdvnunber=" 
set "empresatef=" 
set /p "empresatef=Numero Empresa TEF (4 Digitos):" 
set "iptef=" 
set /p "iptef=IP Servidor TEF:" 
set "portatef=" 
set /p "portatef=Numero Porta TEF:" 
rename scope.ini scope.tmp 
for /f %%a in (scope.tmp) do (
    set foo=%%a 
    if "!foo:[  ]=!" neq "!foo!" set "foo=[%empresatef%%nfilial%]" 
    echo !foo! >> scope.ini) 
del scope.tmp 

的疑問是,不知道如何度過剩餘的參數,使用相同的IF,甚至只有第一步參數文件已經全部變形。

如下:

[00010001] 
Name 
Port 
[General] 
[GER] 
Port=1 
Speed=19200 
SAM=2 

相同,存在用於交換參數沒有條件,第二和第三線也被改變。

謝謝

+0

它會始終是您改變的前三行嗎?你可以包括你想要改變它們的東西嗎? – unclemeat

回答

0
@echo off 
setlocal 
set "nfilial=" 
set /p "nfilial=Numero do Filial (4 Digitos):" 
set "pdvnunber=" 
set "empresatef=" 
set /p "empresatef=Numero Empresa TEF (4 Digitos):" 
set "iptef=" 
set /p "iptef=IP Servidor TEF:" 
set "portatef=" 
set /p "portatef=Numero Porta TEF:" 
>scope.ini.new (
    echo [%empresatef%%nfilial%] 
    echo Name = %iptef% 
    echo Port = %portatef% 
    for /f "skip=3 delims=" %%A in (scope.ini) do echo %%A 
) 
move /y scope.ini.new scop.ini >nul 

如果文件沒有任何標籤,並將該文件是< 64K行,那麼FOR語句可以通過

more +3 scope.ini 

被取代,它會更快。

0

會限制下面的命令的字符數?我只想接受數字字符和只有2個字符。

set "nfilial=" 
set /p "nfilial=Numero do Filial (2 Digitos):" 
for /f "delims=1234567890" %%a in ("%nfilial%") do goto :nfilial 
+0

請提出新的問題。 – howderek