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

回复 12# Batcher


,是英文系统里的。

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

回复 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

回复 8# Batcher

贴上附件...

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

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

回复 7# pdp320921


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

TOP

回复 4# lvsehuaxue


    我试了还是不可以啊!

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

TOP

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

TOP

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

评分人数

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

TOP

  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

返回列表