前些天看到一个问题
当时有思路,但是这几天一下子忙忘了,今天又想起来,写了下测试成功,也算自己做个练习,代码如下,XP 下测试成功,达到提问者的要求.
不过有一点疑问就是我取了ServerFolder 和Filename的记录后,前面会有很多空格,所以我用!filefolder:~30,-1!取目录名,!filename:~26,-1!取文件名,个人猜想如果操作系统变化的话,可能取的位数也会发生变化,至于空格产生原因期待高人解释.
[ Last edited by lililulula on 2007-5-25 at 12:48 PM ]
下面是一个xml文档的内容的部分,难题是,如何根据其内容,然后从电脑中复制所有的Filename文件,并保存到每个文件所对应的ServerFolder路径中?
<UpdateFiles
UpdateDate="21052007 0215">
<FileDescription
ComponentID="AVS"
UpdateType="desc"
ServerFolder="../../bases/av/avc/i386"
Filename="av-i386-0607g.xml"
FileDate="21052007 0057" />
<FileDescription
ComponentID="AS"
UpdateType="desc"
ServerFolder="../../bases/as/kis"
Filename="as-0607g.xml"
FileDate="21052007 0202" />
<FileDescription
ComponentID="AHI386"
UpdateType="desc"
ServerFolder="../../bases/ids/i386"
Filename="ah-i386-0607g.xml"
FileDate="18052007 1408" />
<FileDescription
ComponentID="AHX64"
UpdateType="desc"
ServerFolder="../../bases/ids/x64"
Filename="ah-x64-0607g.xml"
FileDate="18052007 1418" />
<FileDescription
ComponentID="AH"
UpdateType="desc"
ServerFolder="../../bases/ids/i386-x64"
Filename="ah-i386-x64-0607g.xml"
FileDate="18052007 1427" />
很难的一个题目。。希望高手能帮忙解决。。先谢过了!
说明一下。保存路径可以只是后面有显示的部分。如bases/av/avc/i386
当时有思路,但是这几天一下子忙忘了,今天又想起来,写了下测试成功,也算自己做个练习,代码如下,XP 下测试成功,达到提问者的要求.
不过有一点疑问就是我取了ServerFolder 和Filename的记录后,前面会有很多空格,所以我用!filefolder:~30,-1!取目录名,!filename:~26,-1!取文件名,个人猜想如果操作系统变化的话,可能取的位数也会发生变化,至于空格产生原因期待高人解释.
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n /c:"ServerFolder" D:\1.xml') do (
set filefolder=%%j
set filefolder=!filefolder:~30,-1!
for /f "tokens=1* delims=:" %%a in ('findstr /n /c:"Filename" D:\1.xml') do (
set filename=%%b
set filename=!filename:~26,-1!
set /a num=%%i+1
if %%a==!num! (copy !filename! "!filefolder!")
)
)
[ Last edited by lililulula on 2007-5-25 at 12:48 PM ]
