标题: 请高手帮忙看看 
[打印本页]
作者: gigigaga     
时间: 2007-3-6 05:50    
标题: 请高手帮忙看看
我是新手,从本网下拷也一段批处理代码,用作文本文件查找替换工具,但是出了一下问题, 就是如果被替换的文本文件中含有"!" (感叹号) 的话, 替换结束后,里面的感叹号就全都没有了, 但"!"必须得保留, 请问怎样改写如下代码:
@echo on
setlocal enabledelayedexpansion 
for /f "tokens=*" %%i in (a.txt) do ( 
set var=%%i 
set "var=!var:aaa=111!"
set  "var=!var:bbb=222!"
set "var=!var:ccc=333!"
echo !var!>>aaa.txt 
) 
a.txt 内容:
!aaa
!!!bbb!!!
!a!b!c
aaabbbccc1!!bbb
成功替换后的文本aaa.txt应当为:
!111
!!!222!!!
!a!b!c
1112223331!!222
但实际上为:
111  
ECHO 处于打开状态。
bc  
1112223331222
请高手帮忙解决, 查了两天了,也没有找到解决办法
作者: ccwan     
时间: 2007-3-6 06:55
用call来实现变量延迟
@echo off
for /f "tokens=1,2 delims=:" %%i in ('findstr /n .* a.txt') do (
    if "%%i"=="3" (>>aaa.txt echo %%j
    ) else (
    call :begin %%j
    )
)
pause&exit
:begin
set "var=%1"
set "var=%var:a=1%"
set "var=%var:b=2%"
set "var=%var:c=3%"
>>aaa.txt echo %var%
goto :eof