[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.    if "%%i" equ "    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>" (
  4.       echo     ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>&echo.
  5.       ) else (
  6.       if "%%i" equ "    <AllowHardTerminate>true</AllowHardTerminate>" (
  7.             echo     ^<AllowHardTerminate^>true^</AllowHardTerminate^>&echo.
  8.             ) else (
  9.             echo %%i&echo.
  10.             )
  11.    )
  12. )
  13. pause
复制代码
1

评分人数

TOP

回复 2# lvsehuaxue
echo %%i&echo.
这句会死得很惨啊,原文中那么多的"<"和">"。
1

评分人数

    • CrLf: 乐于助人PB + 3
看得多说得多,远比不上写得多。

TOP

回复 3# weichenxiehou
我试了,可以的。你亲自试一试不就知道了!

TOP

回复 4# lvsehuaxue
果然,我武断地以为for在迭代出echo %%i时会把<>认为是重定向符号,原来不会。。。很奇怪,单独执行echo <123>就会出错,看来for/f会自动地过滤掉一些特殊字符。
看得多说得多,远比不上写得多。

TOP

  1. sed -e "s#<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>#<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>#" -e "s#<AllowHardTerminate>false</AllowHardTerminate>#<AllowHardTerminate>true</AllowHardTerminate>#" a.txt >b.txt
复制代码

TOP

回复 4# lvsehuaxue


    我试了还是不可以啊!

TOP

回复 7# pdp320921


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

TOP

  1. @echo off
  2. (for /f "delims=" %%i in ('type a.txt') do (
  3.     if "%%i" equ "    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>" (
  4.         echo     ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>
  5.         echo,
  6.     ) else (
  7.         if "%%i" equ "    <AllowHardTerminate>true</AllowHardTerminate>" (
  8.             echo     ^<AllowHardTerminate^>true^</AllowHardTerminate^>
  9.             echo,
  10.         ) else (
  11.             echo %%i
  12.             echo,
  13.         )
  14.    )
  15. ))>b.txt
复制代码

TOP

回复 8# Batcher

贴上附件...

其实我是想把a.xml文件
   <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
中的true换成false
   <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
源文件是xml格式的,替换还是没成功!

TOP

回复 5# weichenxiehou


    当语块中出现重定向符号时,cmd 在执行语句前的格式化阶段先判断哪些部分是重定向,为类似 >nul 和 <nul 这样的简写补上句柄 1 和 0,标记为重定向命令并后置,举例如下:
  1. for %%a in (t e s t) do dir>%%a.txt /b /a-d /s "%%a"
  2. ::进入循环后,dir>%%a.txt /b /a-d /s "%%a" 被格式化成 dir /b /a-d /s "%%a" 1>%%a.txt
  3. ::然后解释 %%a 为 t,再操作句柄。
复制代码
  1. for %%a in (">test.txt") do dir %%a /b /a-d /s test\
  2. ::进入循环后,dir %%a /b /a-d /s test\ 被格式化后还是 dir %%a /b /a-d /s test\,因为进行格式化时 %%a 还未被解释成>test.txt,所以 > 尚未生效,也就不被 cmd 认为是重定向语句
  3. ::然后解释 %%a 为 test.txt,再操作句柄为默认选项 1>con 2>con。
复制代码

TOP

回复 10# pdp320921


你的xml文件是ANSI编码不?
1

评分人数

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

TOP

本帖最后由 pdp320921 于 2011-11-1 14:13 编辑

回复 12# Batcher


,是英文系统里的。

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

回复 14# Batcher


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

TOP

返回列表