第1个回答 推荐于2016-06-01
@echo off
setlocal enableextensions
setlocal enabledelayedexpansion
set pa=model
set count=0
for /f "skip=2 delims=[] tokens=1" %%i in (
'find /n "jdbc:derby:E:\DB\MYDB" a.xml') do (
for /f "delims=" %%m in (a.xml) do (
set /a count=!count!+1
if /i !count! equ %%i (
echo %pa% >>b.xml ) else (
echo %%m >>b.xml)
)
)
del a.xml && move b.xml a.xml
其中set pa=是你要改写的内容 ,a.xml是你的xml文件,已经测试通过
但你说你那是在下面加一行,那就是count变量作的计数器有问题了,我不太明白怎么会在下面加一行本回答被提问者采纳
第2个回答 2010-05-11
不是保存到了变量str中吗,你说这行我以为你只读含那内容的那一行
如果要全部读出,去掉goto的跳转就可以
文件名为xml,变量str得到含jdbc:derby:E:\DB\MYDB的那一行
------------------------------------------------------
@echo off
for /f "delims=" %%i in ('findstr "jdbc:derby:E:\DB\MYDB" xml') do set str=%%i&goto :next
:next
echo %str%
pause
第3个回答 2010-05-11
呵呵,自己在写批处理,要是不清楚for命令,到我空间看看
我也写一个吧(不足处是没考虑保留空行,不然代码要复杂一些):
@echo off&setlocal enabledelayedexpansion
set str=jdbc:derby:E:\DB\MYDB
set ff=your.xml
set aa=变量
copy nul new.txt
for /f "delims=" %%a in (%ff%) do (
set hstr=%%a
if "!hstr!" equ "%str%" set hstr=%aa%
echo !hstr!>>new.txt)
:: del /q %ff% & ren new.txt %ff%
:: 如果测试正确将上行的 "::" 删去同时把本行及以下删除
echo 比较一下:
fc %ff% new.txt
pause
第4个回答 2010-05-11
@echo off
setlocal enabledelayedexpansion
set /p str=请输入:
for /f "tokens=* delims=" %%i in (a.xml) do (
set var=%%i
set var=!var:jdbc:derby:E:\DB\MYDB=%str%!
echo !var!>>a.txt
)
del a.xml
ren a.txt a.xml
或者
@echo off
set /p str=
for /f "tokens=* delims=" %%i in (a.xml) do (
if /i "%%i"=="jdbc:derby:E:\DB\MYDB" (echo %str%>>a.txt) else (echo %%i>>a.txt)
)