请教根据A文件替换B文件批处理能实现吗?
我现在需要将 A.txt里面的 ID 和 名称 "1 短剑"替换到 B.xml 里面 相同ID 后面的name英文名称,例如替换以后是这样<weapon id="1" name="短剑">,请教大佬们批处理应该怎么写呢?A.txt
ID 名称
1 短剑
2 长剑
3 宽剑
4 木棒
5 钉锤
6 见习生法杖
7 见习生之杖
8 柳木魔杖
9 柏木魔杖
10 匕首
11 骨制匕首
12 小刀
13 短弓
14 弓
15 短矛
16 长矛
B.xml 文件内容
<weapon id="1" name="Short Sword">
<set name="crystal_type" value="NONE"/>
<set name="icon" value="icon.weapon_small_sword_i00"/>
<set name="price" value="590"/>
<set name="rnd_dam" value="10"/>
<set name="soulshots" value="1"/>
<set name="spiritshots" value="1"/>
<set name="type" value="SWORD"/>
<set name="weight" value="1600"/>
</weapon>
<weapon id="2" name="Long Sword">
<set name="crystal_type" value="NONE"/>
<set name="icon" value="icon.weapon_long_sword_i00"/>
<set name="price" value="105000"/>
<set name="rnd_dam" value="10"/>
<set name="soulshots" value="2"/>
<set name="spiritshots" value="2"/>
<set name="type" value="SWORD"/>
<set name="weight" value="1560"/>
</weapon> 可以,再复杂些也可以, [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=255903&ptid=62797]2#[/url] [i]xczxczxcz[/i] [/b]
怎么写的呢,求教 # 可用第3方工具awk解决问题:[url]http://bcn.bathome.net/s/tool/index.html?key=gawk[/url]
# 以下代码保存为ANSI编码格式test.awk
# 执行:gawk -f .\test.awk A.txt B.xml
#
{
if ((FNR == 1) && (NR != 1)) {
Flies_No++
FS = "="
OFS = "="
$0 = $0
}
if (Flies_No == 0) {
Name_ID["\""$1"\" name"] = $2
next
}
if ($0~/weapon id/) {
$3="\"" Name_ID[$2] "\""">"
$1 = $1
}
} 不用第3方工具的方法
以下代码以ANSi编码保存为test.bat,执行test.bat A.txt B.xml即可
@echo off
Setlocal EnableDelayedExpansion
for /f "delims==" %%a in ('set Name_ID[ 2^>nul') do set "%%a="
for /f "usebackq tokens=1*" %%a in ("%~1") do set "Name_ID["%%a" name]="%%b">"
for /f "usebackq tokens=1-2* delims==" %%a in ("%~2") do (
set "Out_Srt=%%a"
echo;"!Out_Srt!"|find.exe /i "<weapon id">Nul && (
set "Out_Srt=!Out_Srt!=%%b=!Name_ID[%%b]!"
)||(
if %%b. NEQ . set "Out_Srt=!Out_Srt!=%%b"
if %%c. NEQ . set "Out_Srt=!Out_Srt!=%%c"
)
echo;!Out_Srt!
)
endlocal
页:
[1]