[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何修改文本中内容?

本帖最后由 pdp320921 于 2011-11-2 22:06 编辑
  1. <?xml version="1.0" encoding="UTF-16"?>
  2. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  3.   <RegistrationInfo>
  4.     <Date>2011-10-28T20:41:25</Date>
  5.     <Author>3-14</Author>
  6.   </RegistrationInfo>
  7.   <Triggers>
  8.     <TimeTrigger>
  9.       <Repetition>
  10.         <Interval>PT2M</Interval>
  11.         <StopAtDurationEnd>false</StopAtDurationEnd>
  12.       </Repetition>
  13.       <StartBoundary>2011-10-28T20:41:00</StartBoundary>
  14.       <Enabled>true</Enabled>
  15.     </TimeTrigger>
  16.   </Triggers>
  17.   <Principals>
  18.     <Principal id="Author">
  19.       <RunLevel>LeastPrivilege</RunLevel>
  20.       <UserId>3-14-PC\3-14</UserId>
  21.       <LogonType>InteractiveToken</LogonType>
  22.     </Principal>
  23.   </Principals>
  24.   <Settings>
  25.     <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  26.     <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
  27.     <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  28.     <AllowHardTerminate>true</AllowHardTerminate>
  29.     <StartWhenAvailable>false</StartWhenAvailable>
  30.     <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  31.     <IdleSettings>
  32.       <StopOnIdleEnd>true</StopOnIdleEnd>
  33.       <RestartOnIdle>false</RestartOnIdle>
  34.     </IdleSettings>
  35.     <AllowStartOnDemand>true</AllowStartOnDemand>
  36.     <Enabled>true</Enabled>
  37.     <Hidden>false</Hidden>
  38.     <RunOnlyIfIdle>false</RunOnlyIfIdle>
  39.     <WakeToRun>false</WakeToRun>
  40.     <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
  41.     <Priority>7</Priority>
  42.   </Settings>
  43.   <Actions Context="Author">
  44.     <Exec>
  45.       <Command>C:\Users\3-14\AppData\Local\Temp\ac.bat</Command>
  46.     </Exec>
  47.   </Actions>
  48. </Task>
复制代码
文本如上

我想把
  1.    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
  2.        <stopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
复制代码
改成
  1.       <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  2.   <stopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
复制代码
试了几次for没成功,头疼

哪位大侠指点下!
感激!
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

回复 26# awk


    非常感谢!
不过还有点小问题
就是结尾</Task> 丢了>

TOP

回复 25# pdp320921


你的xml文件每行结尾不是普通的CRLF,全部是CRCRLF。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type a.xml') do (
  4.     set str=%%i
  5.     set str=!str:~0,-1!
  6.     if "!str!" equ "    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>" (
  7.         echo     ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^>
  8.     ) else if "!str!" equ "    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>" (
  9.         echo     ^<StopIfGoingOnBatteries^>false^</StopIfGoingOnBatteries^>
  10.     ) else (
  11.         echo !str!
  12.     )
  13. ))>b.xml
复制代码
2

评分人数

    • CrLf: 牛逼,你太细心了...技术 + 1
    • pdp320921: 厉害,这都看得出来!技术 + 1

TOP

回复 24# awk


请帮忙再看看,感激!

TOP

回复 23# pdp320921


把你的xml文件压缩一下传上来,我试试。

TOP

回复 9# awk

还是无法实现替换,真够蛋疼的我

TOP

这类问题LZ为什么不用AWK的方法呢?个人认为还是SED方便,只不过要下载(但是完全值得)
1

评分人数

    • CrLf: 乐于助人PB + 3
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 11# CrLf
多谢指教,意思就是说预处理中特殊字符的处理晚于%a%,早于%%a和!a!以及set/a?
因为如下会生成test.txt:
  1. set "test=>test.txt"
  2. echo,%test%
复制代码
而以下两种情况都只会显示“>test.txt”:
  1. for %%a in (">test.txt") do echo,%%~a
复制代码
  1. setlocalenabledelayedexpansion
  2. set "test=>test.txt"
  3. echo,!test!
复制代码
原来netbenton前辈曾发帖讨论过预处理时变量的替换优先级,%1>%a%>%%a>!a!>set/a,看来这个特殊字符的处理插入到它们之中了。
看得多说得多,远比不上写得多。

TOP

回复 19# Batcher


    试了,可以输出b.txt但是 没能实现替代仍然是原来值

TOP

回复 18# pdp320921


你先试试9楼那个type的方法,然后说说具体哪里不行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16# Batcher


    发现一个问题:

当xml是以ANSI编码时无法实现修改文本内容
当xml是以Unicode编码时可以实现修改文本内容

不过如何能通过批处理实现xml文件以Unicode编码?

TOP

回复 16# Batcher


    我不知道啊,还不知对于我的问题还没解决方法?

TOP

回复 15# pdp320921


你觉得没有?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# Batcher


    默认是ANSI
还跟编码方式有关?

TOP

回复 13# pdp320921


跟系统语言没有一毛钱关系
你用记事本打开它,选择“另存为”,就可以看到。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表