批处理替换文件内容时出现错误

来源:百度知道 编辑:UC知道 时间:2024/06/08 16:08:32
会有加分的哦!!!!!
我写了一个程序如下所示:
@echo off&setlocal enabledelayedexpansion
for /r d:\ %%i in (open.bat) do (
for /f "delims=" %%a in ('type "%%i"') do (
set a=%%a
set b=!a:0143=0144!
echo.!b!>>"%%~dpni"_yiti.bat
) )
目的是替换d:\open.bat文件中的0143字符串为0144,并另存为open_yiti.bat。

open.bat的内容如下:
start C:\WINDOWS\system32\cmd.exe /c net use \\10.100.10.1 !TESTfor123 /user:test

copy /v /y \\10.100.10.1\test\core0143\open.txt

问题如下:
现在确实可以将copy命令中的0143 替换为0144,但是net use 中的“!TESTfor123 /user:”内容消失了。所以希望大家能帮我看看怎么修改我的程序,可以保证只修改0143,对!开头的部分不做修改

@echo off
for /r d:\ %%i in (open.bat) do (
for /f "tokens=1* delims=:" %%a in ('findstr /n .* %%i') do (
set b=%%b
setlocal enabledelayedexpansion
if not "!b!"=="" (
set b=!b:0143=0144!
echo.!b!>>"%%~dpni"_yiti.bat
)
endlocal
)
)

这样测试下,应该是可以了