中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 17:21
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 问一个有关文本内容的难题
可打印版本  2,214 / 34
第16楼 bjsh 发表于 2007-05-23 11:40
银牌会员 发帖 621 积分 2,000

@echo off
call :reset
for /f "tokens=2 delims==" %%a in ('findstr /i "serverfolder filename" a.xml') do (
if not defined serverfolder (set "serverfolder=%%~a") else (
if not defined filename set "filename=%%~a" & call :start
)
)
goto :eof
md D:\AVP\%serverfolder%
:start
set "serverfolder=%serverfolder:~6%
copy %filename% D:\AVP\%serverfolder%
:reset
set "serverfolder="
set "filename="

pause
exit




其中的 md D:\AVP\%serverfolder% 不是写在那里的;
否则根本就执行不到这一句;
写在copy前面;
:start标签的里面;

还有 我把你在一楼贴的代码保存为 a.xml;
如果不是的请自行修改代码红色部分

导致问题的根本原因是因为你加上的pause&exit
好好读读源码
第一行是call :reset
执行reset时你加了pause&pause不直接退出干吗..

根据你的意思修改了下


[ Last edited by bjsh on 2007-5-23 at 04:09 PM ]
第17楼 lxmxn 发表于 2007-05-23 13:18
版主 发帖 4,938 积分 11,386
use sed+bat
第18楼 nbic 发表于 2007-05-23 13:39
初级用户 发帖 61 积分 135
Originally posted by bjsh at 2007-5-23 11:40 AM:


其中的 md D:\AVP\%serverfolder% 不是写在那里的;
否则根本就执行不到这一句;
写在copy前面;
:start标签的里面;

还有 我把你在一楼贴的代码保存为 a. ...


你的这个程序,运行后,提示:系统找不到指定文件。如果这个程序的工具和文件不在一起的话,它会提示:打不开xml文件
第19楼 nbic 发表于 2007-05-23 13:46
初级用户 发帖 61 积分 135
Originally posted by lxmxn at 2007-5-23 01:18 PM:
第20楼 lxmxn 发表于 2007-05-23 14:23
版主 发帖 4,938 积分 11,386
汗一个...

问问题就把问题说清楚,不要别人给了答案又来一个不符合要求。
第21楼 bjsh 发表于 2007-05-23 16:14
银牌会员 发帖 621 积分 2,000
Originally posted by nbic at 2007-5-23 01:39 PM:


你的这个程序,运行后,提示:系统找不到指定文件。如果这个程序的工具和文件不在一起的话,它会提示:打不开xml文件


那个程序必须和a.xml以及欲复制的文件在同一个目录下;
否则如果找不到a.xml则显示:
无法打开a.xml
如果欲复制的文件没在当前目录;自然出现"系统找不到指定文件"
第22楼 nbic 发表于 2007-05-23 18:25
初级用户 发帖 61 积分 135
Originally posted by bjsh at 2007-5-23 04:14 PM:


那个程序必须和a.xml以及欲复制的文件在同一个目录下;
否则如果找不到a.xml则显示:
无法打开a.xml
如果欲复制的文件没在当前目录;自然出现"系统找不到指定文件"

用如下程序。
@echo off
call :reset
for /f "tokens=2 delims==" %%a in ('findstr /i "serverfolder filename" a.xml') do (
if not defined serverfolder (set "serverfolder=%%~a") else (
if not defined filename set "filename=%%~a" & call :start
)
)
pause & exit

:start
set "serverfolder=%serverfolder:~6%
md D:\AVP\%serverfolder%
copy %filename% D:\AVP\%serverfolder%
:reset
set "serverfolder="
set "filename="
提示语法不正确。。

此程序和a.xml文件,以及a.xml里面所涉及的文件都在同一个文件夹里面。。
第23楼 bjsh 发表于 2007-05-23 20:17
银牌会员 发帖 621 积分 2,000
怪我了;
怪我当时一粗心复制代码时set "serverfolder=%serverfolder:~6%
后面少了个引号;
而且当时写的时候
只写了echo %filename% 将被复制到 %serverfolder%
而没注意到%serverfolder%里的斜杠是反的;
修正代码如下;


测试结果如下:
至于少了——index/6这一支是因为你的xml也没有这个路径;
可以自行添加;

c:\AVP>tree
文件夹 PATH 列表
卷序列号码为 0007F00C 45A6:9F99
C:.
├─bases
│ ├─av
│ │ ├─avc
│ │ │ └─i386
│ │ └─klava
│ │ ├─webav
│ │ ├─emu
│ │ │ └─i386
│ │ └─wa
│ │ └─i386
│ ├─as
│ │ └─kis
│ ├─ids
│ │ ├─i386
│ │ ├─x64
│ │ └─i386-x64
│ ├─aspy
│ ├─blst
│ ├─pdm
│ ├─upd
│ ├─info
│ ├─pcdb
│ └─rt
└─AutoPatches
├─kav6
├─kav_aol
├─kav_dt
├─kav_jp
├─kav_kpss
├─kav_mais
├─kav_pcss
├─kav_rss
├─kav_stg
└─kav_xss


[ Last edited by bjsh on 2007-5-23 at 08:28 PM ]
第24楼 nbic 发表于 2007-05-23 21:07
初级用户 发帖 61 积分 135
Originally posted by bjsh at 2007-5-23 08:17 PM:
怪我了;
怪我当时一粗心复制代码时set "serverfolder=%serverfolder:~6%
后面少了个引号;
而且当时写的时候
只写了echo %filename% 将被复制到 %serverfolder%
...

刚才试了试。。可以啊。。呵呵

不过,工具要和a.xml以及a.xml里面的filename在同一个文件夹里面,才可以完成解读和复制功能。。能不能,将工具当独抽出来,然后对所有xml文件进行解读和复制操作呢?

还有个问题,a.xml文件之前,能不能加路径啊?如果可以的话,那么工具是不是可以当独放到文件夹外面啊?
第25楼 bjsh 发表于 2007-05-23 22:27
银牌会员 发帖 621 积分 2,000
是的;只要给a.xml和filename指定路径;
这个程序放哪都可以了;

其实和他们放一起不过是因为省略了当前路径而已;

限定路径后;就无所谓放哪了.
第26楼 nbic 发表于 2007-05-23 22:42
初级用户 发帖 61 积分 135
刚才我发完帖自己试了试。可以。。不错。。

因为xml的文件不是都在一个文件夹里面。而且,每个xml文件里面的内容所涉及的文件也不都在同一个文件夹里面。现在我想这样来处理。。
1、先将所有*0607g.xml的文件用xcopy复制到一个文件夹里面;
2、利用上面的程序,来进行xml文件的读取和复制操作。
现在有个问题。能不能将所有xml文件都和a.xml放在一起。那么进行读取和复制操作时,全部一起完成?如果不能。那么是不是重复上面的程序,只要将a.xml改改名称,将其里面所涉及的文件的路径再改改就行?
第27楼 terse 发表于 2007-05-24 00:29
银牌会员 发帖 946 积分 2,404
请教一下:set "serverfolder=%serverfolder:~6%"在这里的用处?
为什么不可以直接copy %filename% %serverfolder%
第28楼 bjsh 发表于 2007-05-24 06:20
银牌会员 发帖 621 积分 2,000
起初serverfolder取得的值为这种形式:
../../bases/info

我用%serverfolder:~6%获得bases/info去掉前面的省略号;

但是现在看来确实是多余的;
直接把'/'替换为'\'即可


这是一种错误的说法
实际上 md c:\avp\bases\info
和md c:\avp\..\..\bases\info 是不同的;后者会把目录建在c:\下而不是AVP下;
实际上 c:\avp\..\bases\info也可以把目录健在c:\
\..表示上一层目录;
\..\..表示上两层目录;
比如 md c:\avp\bases\..\..\t
会把t文件夹建立在c:\目录下
而 md c:\avp\bases\..\t会把 t文件夹建立在 c:\avp\ 下

[ Last edited by bjsh on 2007-5-24 at 12:41 PM ]
第29楼 nbic 发表于 2007-05-24 07:30
初级用户 发帖 61 积分 135
现在碰到一个问题。由于我完成a.xml里面文件的复制后,要接着进行其它xml文件的操作时。我采用重复利用操作a.xml文件时的程序(当然,将里面的一些内容小改了下,如:文件名、路径之类)。结果运行时发现,不但其它的重复程序不能完成任务,而且最初的那个操作a.xml文件的程序也出现问题,不能完成复制。。

这个问题该如何解决啊?

如果不用重复利用操作a.xml 时的程序,那么,在操作别的xml 文件时,该怎么写程序呢?
第30楼 bjsh 发表于 2007-05-24 08:40
银牌会员 发帖 621 积分 2,000
而且最初的那个操作a.xml文件的程序也出现问题

??

听不大懂;

尽可能的把你的东西;只像a.xml这样的xml按照原来的目录层次结构打包上来;
上一页  1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023