bat读取并改写文件

我有一个xml文件,里面有一行内容是:jdbc:derby:E:\DB\MYDB

我想用bat文件来读取这个xml,并把 jdbc:derby:E:\DB\MYDB这行改成bat里面的一个变量的值。

如何做到呢?
云上他,你的答案仅仅是读取到文件中的那一行,还没有改写它并保存啊。

  用bat读取并改写文件的方法如下:

    读取。  新建文本文档在文本文档里输入: dir *.* /a /b /s >1.txt 保存为 提取名字.bat  文件名字被提取到当前文件夹的1.txt里面了!也可以提取某类型的文件比如*.mp3 或者a*.mp3   

    改写文件 。 新建文本文档在文本文档里输入: @for /f %%a in (A.txt) do @(  if exist %%a for /f %%b in (B.txt) do (  rename %%a %%b)) 保存为 批量改名.bat A.txt 是原来的文件名 B.txt 是修改后的文件名  一行对应一个名字不能有空格同时注意文件属性 

    a.txt :  NBA直播录像1.3gp NBA直播录像2.3gp 

    b.txt :  NBA直播录像第一场.3gp NBA直播录像第二场.3gp 

温馨提示:答案为网友推荐,仅供参考
第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)
)
相似回答