中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 07:11
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]这个关于xml文本的操作怎么用脚本实现 查看 983 回复 13
楼 主 [求助]这个关于xml文本的操作怎么用脚本实现 发表于 2008-07-24 16:12 ·  中国 四川 成都 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
我想对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 ]
2 发表于 2008-07-24 16:55 ·  中国 四川 成都 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
其实主要是我不知道怎么把同属AppPool #10的2个或者多个站点名都提出来,比如提出名称 test1.com和test2.com等。
然后还不知道怎么能替换AppPool #10为test1.com #10以及test2.com #10等
3 发表于 2008-07-24 18:25 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
如下:

@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
4 发表于 2008-07-24 19:20 ·  中国 四川 成都 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
很感谢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
5 发表于 2008-07-24 20:48 ·  中国 四川 成都 成华区 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
麻烦各位帮忙解决下
6 发表于 2008-07-24 22:36 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
你需要的是xmlStarlet

http://xmlstar.sourceforge.net/
7 发表于 2008-07-24 23:01 ·  中国 四川 成都 成华区 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
请老大再多给点思路
8 发表于 2008-07-25 00:59 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
我给出的代码,楼主是不是修改下就能达到了啊。
批处理之家新域名:www.bathome.net
9 发表于 2008-07-25 09:55 ·  中国 四川 成都 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
我熟悉了下xmlStarlet,但始终无法完成对同属AppPool #10进程池的所有站点进行提取,比如提取出 test1.com和test2.com
10 发表于 2008-07-25 17:26 ·  中国 四川 成都 电信
初级用户
★★
积分 159
发帖 56
注册 2006-09-15 10:31
19年会员
UID 62663
状态 离线
没有高人解答我就只有用vbs试试了
11 发表于 2008-07-25 18:45 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
vbs多好……这种操作就用VBS……快有准
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
12 发表于 2008-07-25 23:41 ·  中国 北京 鹏博士BGP
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
iis 不是有几个相应的VBS,用来操作控制IIS的状态么、
比如添加站点之类的这种操作。

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
13 发表于 2008-07-26 09:52 ·  中国 福建 福州 连江县 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
19年会员
UID 74328
性别 男
状态 离线
Originally posted by lxmxn at 2008-7-24 22:36:
你需要的是xmlStarlet

http://xmlstar.sourceforge.net/


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

最好给几个实例参考下
14 发表于 2008-08-01 09:31 ·  中国 北京 光环新网
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
百度 xmlStarlet

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
论坛跳转: