中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]这个关于xml文本的操作怎么用脚本实现
作者:
标题: [求助]这个关于xml文本的操作怎么用脚本实现 上一主题 | 下一主题
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『楼 主』:  [求助]这个关于xml文本的操作怎么用脚本实现

我想对iis的配置文件进行操作,比如文本内某一些内容如下,这是2个站点test1.com test2.com,同属于一个进程池AppPool #10,我想用一个脚本将下面的2个站点重新分配下,使每一个站点对应一个进程池,比如使站点test1.com划为进程池test1.com #10;把站点test2.om划为进程池test2.com #10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~begin
<IIsWebServer        Location ="/LM/W3SVC/1692685952"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test1.com"
                ServerComment="test1.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1692685952/filters"
                >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1692685952/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="AppPool #10"
                AppRoot="/LM/W3SVC/1692685952/Root"
                >
</IIsWebVirtualDir>





<IIsWebServer        Location ="/LM/W3SVC/1796746353"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test2.com"
                ServerComment="test2.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1796746353/filters"
        
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1796746353/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="AppPool #10"
                AppRoot="/LM/W3SVC/1796746353/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="E:\dbbackup"
                >
</IIsWebVirtualDir>


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~end


实现后的结果如下
<IIsWebServer        Location ="/LM/W3SVC/1692685952"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test1.com"
                ServerComment="test1.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1692685952/filters"
                >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1692685952/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="test1.com #10"
                AppRoot="/LM/W3SVC/1692685952/Root"
                >
</IIsWebVirtualDir>





<IIsWebServer        Location ="/LM/W3SVC/1796746353"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test2.com"
                ServerComment="test2.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1796746353/filters"
        
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1796746353/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="test2.com #10"
                AppRoot="/LM/W3SVC/1796746353/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="E:\dbbackup"
                >
</IIsWebVirtualDir>

[ Last edited by lfzzj on 2008-7-25 at 11:43 AM ]

2008-7-24 16:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 2 楼』:  

其实主要是我不知道怎么把同属AppPool #10的2个或者多个站点名都提出来,比如提出名称 test1.com和test2.com等。
然后还不知道怎么能替换AppPool #10为test1.com #10以及test2.com #10等

2008-7-24 16:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

如下:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%i in ('findstr /n .* iis.ini') do (
    set "str=%%i"
    if "!str:ServerComment=!" neq "%%i" call :lp
    if not defined flag (
       set "flag=a"&echo %%i>iis.ini
       ) else (
       if "!str:PoolId=!" neq "%%i" (
          echo                 AppPool="!var! ^#10">>iis.ini
          ) else (
          echo.%%i>>iis.ini
)))
start iis.ini&goto :eof
:lp
for /f "tokens=2 delims==" %%i in ("%str%") do set "var=%%~i"
[ Last edited by bat-zw on 2008-7-24 at 06:32 PM ]



批处理之家新域名:www.bathome.net
2008-7-24 18:25
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 4 楼』:  

很感谢bat-zw。请你再看下
我之前提出的问题不够完整,现在我从新整理了一份:
a.txt 文件 为我从实际文件中提取的一部分内容
b.txt文件 为我想实现的结果

a.txt内容如下:

<?xml version ="1.0"?>
<configuration xmlns="urn:microsoft-catalog:XML_Metabase_V64_0">
<MBProperty>
<IIS_Global        Location ="."
                BINSchemaTimeStamp="251a765c4d99c801"
                ChangeNumber="32763"
                HistoryMajorVersionNumber="287"
               

SessionKey="49634b62980000004c00000040000000010200000168000000a40000562eac418683ad5dbacdcc0d5597e0a196c4f05c2179a088555682bd980277c5eb1d7c9f4549930d09dd3f466

a63942bc764e88a8ee577f36571d23de94d239effff4e005a3f7fc4d3657f011ae03ac72b2f03416fbe9bff88920d14a4bb87df4c69f1369c9408767988169fdc5a8ce267ee56b80dd96c8338ed52

cc326cd8e7dd7ec59c"
                XMLSchemaTimeStamp="7f7c785c4d99c801"
        >
</IIS_Global>



~~~~~~~~~~~~~~~~~~站点test1.com~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<IIsWebServer        Location ="/LM/W3SVC/1692685952"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test1.com"
                ServerComment="test1.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1692685952/filters"
               

AdminACL="49634462f0000000a400000040000000c18618ef8781fc29d0feeb5cc6685376b01fc41fe08d8245f4f702bfbd9f7ae1f74429e9e507f6f5729ef4a3e634126cb486569210f10310c4c

a0b701d02120f72f3a72e5339c7a367273ce8b4fdc590417c3457c795c314f6ff9669ad8de29f6957debdf4551e7f01a5a000972deea05104d5c284b1e47d057d04fd8de14c8e817460be132da8d7

674a6b10dd788033c8347c98faa64c9fdf844fa581210c615790dc15e48328f89b00f269c098ace7ccebaa144d961451ca649afa782301085ffc374c71c4205fa8f1420f673bf7ce4eae3a16758a7

f1db3ea1cc322266185ed75916cce3d9112"
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1692685952/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="AppPool #10"
                AppRoot="/LM/W3SVC/1692685952/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="F:\perl"
               

UNCPassword="49634462500000000600000040000000c18618ef86813600e050d39feb134cf3024228de33bd68f2be421a4acacb679900d66487abbb6bf4023b221cb811d48ca890d75d9a5d26fa

271b0d2978ed22733177004f7d762e76"
        >
</IIsWebVirtualDir>





~~~~~~~~~~~~~~~~~~站点test2.com~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<IIsWebServer        Location ="/LM/W3SVC/1796746353"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test2.com"
                ServerComment="test2.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1796746353/filters"
               

AdminACL="49634462f0000000a400000040000000c18618ef8781fc29d0feeb5cc6685376b01fc41fe08d8245f4f702bfbd9f7ae1f74429e9e507f6f5729ef4a3e634126cb486569210f10310c4c

a0b701d02120f72f3a72e5339c7a367273ce8b4fdc590417c3457c795c314f6ff9669ad8de29f6957debdf4551e7f01a5a000972deea05104d5c284b1e47d057d04fd8de14c8e817460be132da8d7

674a6b10dd788033c8347c98faa64c9fdf844fa581210c615790dc15e48328f89b00f269c098ace7ccebaa144d961451ca649afa782301085ffc374c71c4205fa8f1420f673bf7ce4eae3a16758a7

f1db3ea1cc322266185ed75916cce3d9112"
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1796746353/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="AppPool #10"
                AppRoot="/LM/W3SVC/1796746353/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="E:\dbbackup"
               

UNCPassword="49634462500000000600000040000000c18618ef86813600e050d39feb134cf3024228de33bd68f2be421a4acacb679900d66487abbb6bf4023b221cb811d48ca890d75d9a5d26fa

271b0d2978ed22733177004f7d762e76"
        >
</IIsWebVirtualDir>




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~进程池AppPool #10~~~~~~~~~~~~~~~~~

<IIsApplicationPool        Location ="/LM/W3SVC/AppPools/AppPool #10"
                AppPoolAutoStart="TRUE"
        >
</IIsApplicationPool>



b.txt内容如下:

<?xml version ="1.0"?>
<configuration xmlns="urn:microsoft-catalog:XML_Metabase_V64_0">
<MBProperty>
<IIS_Global        Location ="."
                BINSchemaTimeStamp="251a765c4d99c801"
                ChangeNumber="32763"
                HistoryMajorVersionNumber="287"
               

SessionKey="49634b62980000004c00000040000000010200000168000000a40000562eac418683ad5dbacdcc0d5597e0a196c4f05c2179a088555682bd980277c5eb1d7c9f4549930d09dd3f466

a63942bc764e88a8ee577f36571d23de94d239effff4e005a3f7fc4d3657f011ae03ac72b2f03416fbe9bff88920d14a4bb87df4c69f1369c9408767988169fdc5a8ce267ee56b80dd96c8338ed52

cc326cd8e7dd7ec59c"
                XMLSchemaTimeStamp="7f7c785c4d99c801"
        >
</IIS_Global>





<IIsWebServer        Location ="/LM/W3SVC/1692685952"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test1.com"
                ServerComment="test1.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1692685952/filters"
               

AdminACL="49634462f0000000a400000040000000c18618ef8781fc29d0feeb5cc6685376b01fc41fe08d8245f4f702bfbd9f7ae1f74429e9e507f6f5729ef4a3e634126cb486569210f10310c4c

a0b701d02120f72f3a72e5339c7a367273ce8b4fdc590417c3457c795c314f6ff9669ad8de29f6957debdf4551e7f01a5a000972deea05104d5c284b1e47d057d04fd8de14c8e817460be132da8d7

674a6b10dd788033c8347c98faa64c9fdf844fa581210c615790dc15e48328f89b00f269c098ace7ccebaa144d961451ca649afa782301085ffc374c71c4205fa8f1420f673bf7ce4eae3a16758a7

f1db3ea1cc322266185ed75916cce3d9112"
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1692685952/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="test1.com #10"
                AppRoot="/LM/W3SVC/1692685952/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="F:\perl"
               

UNCPassword="49634462500000000600000040000000c18618ef86813600e050d39feb134cf3024228de33bd68f2be421a4acacb679900d66487abbb6bf4023b221cb811d48ca890d75d9a5d26fa

271b0d2978ed22733177004f7d762e76"
        >
</IIsWebVirtualDir>






<IIsWebServer        Location ="/LM/W3SVC/1796746353"
                AuthFlags="0"
                ServerAutoStart="TRUE"
                ServerBindings=":80:test2.com"
                ServerComment="test2.com"
        >
</IIsWebServer>
<IIsFilters        Location ="/LM/W3SVC/1796746353/filters"
               

AdminACL="49634462f0000000a400000040000000c18618ef8781fc29d0feeb5cc6685376b01fc41fe08d8245f4f702bfbd9f7ae1f74429e9e507f6f5729ef4a3e634126cb486569210f10310c4c

a0b701d02120f72f3a72e5339c7a367273ce8b4fdc590417c3457c795c314f6ff9669ad8de29f6957debdf4551e7f01a5a000972deea05104d5c284b1e47d057d04fd8de14c8e817460be132da8d7

674a6b10dd788033c8347c98faa64c9fdf844fa581210c615790dc15e48328f89b00f269c098ace7ccebaa144d961451ca649afa782301085ffc374c71c4205fa8f1420f673bf7ce4eae3a16758a7

f1db3ea1cc322266185ed75916cce3d9112"
        >
</IIsFilters>
<IIsWebVirtualDir        Location ="/LM/W3SVC/1796746353/root"
                AccessFlags="AccessRead"
                AppFriendlyName="默认应用程序"
                AppIsolated="2"
                AppPoolId="test1.com #10"
                AppRoot="/LM/W3SVC/1796746353/Root"
                AuthFlags="AuthAnonymous | AuthNTLM"
                DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate |

EnableDefaultDoc"
                Path="E:\dbbackup"
               

UNCPassword="49634462500000000600000040000000c18618ef86813600e050d39feb134cf3024228de33bd68f2be421a4acacb679900d66487abbb6bf4023b221cb811d48ca890d75d9a5d26fa

271b0d2978ed22733177004f7d762e76"
        >
</IIsWebVirtualDir>






<IIsApplicationPool        Location ="/LM/W3SVC/AppPools/test1.com #10"
                AppPoolAutoStart="TRUE"
        >
</IIsApplicationPool>
<IIsApplicationPool        Location ="/LM/W3SVC/AppPools/test2.com #10"
                AppPoolAutoStart="TRUE"
        >
</IIsApplicationPool>


上面的内容只是提取的一少部分,所以和实际运用会有点差别。a.txt中的2个站点有相同的特征都是同属AppPool #10。所以需要提取出来建对应的进程池 test1.com #10和test2.com #10,最后修改原来的AppPoolId中的 AppPool #10 为 test1.com #10和test2.com #10

2008-7-24 19:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 5 楼』:  

麻烦各位帮忙解决下

2008-7-24 20:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

你需要的是xmlStarlet

http://xmlstar.sourceforge.net/

2008-7-24 22:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 7 楼』:  

请老大再多给点思路

2008-7-24 23:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 8 楼』:  

我给出的代码,楼主是不是修改下就能达到了啊。



批处理之家新域名:www.bathome.net
2008-7-25 00:59
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 9 楼』:  

我熟悉了下xmlStarlet,但始终无法完成对同属AppPool #10进程池的所有站点进行提取,比如提取出 test1.com和test2.com

2008-7-25 09:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lfzzj
初级用户





积分 159
发帖 56
注册 2006-9-15
状态 离线
『第 10 楼』:  

没有高人解答我就只有用vbs试试了

2008-7-25 17:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 11 楼』:  

vbs多好……这种操作就用VBS……快有准



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-7-25 18:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 12 楼』:  

iis 不是有几个相应的VBS,用来操作控制IIS的状态么、
比如添加站点之类的这种操作。




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-7-25 23:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by lxmxn at 2008-7-24 22:36:
你需要的是xmlStarlet

http://xmlstar.sourceforge.net/

版版有空写个xmlStarlet的中文教程吗?

最好给几个实例参考下

2008-7-26 09:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 14 楼』:  

百度 xmlStarlet




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-8-1 09:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: