Board logo

标题: [其他] 【已解决】为什么这样的批处理转意符无法运行? [打印本页]

作者: chouxia    时间: 2015-4-22 12:45     标题: 【已解决】为什么这样的批处理转意符无法运行?

本帖最后由 chouxia 于 2015-4-22 14:07 编辑

代码如下
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. v:\run\echox -c 4f tttttt2
  4. echo ^@echo off>d:\111\333.bat
  5. echo v^:\run\sed ^-i s^/rendering^=2/rendering^=3^/g "d:\111\123.txt^">>d:\111\333.bat
  6. echo cd \log>>d:\111\333.bat
  7. echo dir>>d:\111\333.bat
  8. echo if ^%^ERRORLEVEL^% equ 0 (>>d:\111\333.bat
  9. echo timeout /t 2>>d:\111\333.bat
  10. echo v:\run\sed -i s/rendering^=3/rendering^=4/g d:\111\123.txt>>d:\111\333.bat
  11. echo exit) else (>>d:\111\333.bat
  12. echo v:\run\sed -i s/rendering^=3/rendering^=99/g d:\111\123.txt>>d:\111\333.bat
  13. echo exit>>d:\111\333.bat
  14. echo ^)>>d:\111\333.bat
  15. echo timeout /t ^2>>d:\111\333.bat
  16. echo cd \log>>d:\111\333.bat
  17. echo dir>>d:\111\333.bat
  18. echo if ^%^ERRORLEVEL^% equ 0 (>>d:\111\333.bat
  19. echo timeout /t 2>>d:\111\333.bat
  20. echo v:\run\sed -i s/rendering^=3/rendering^=4/g v:\1aep\!aepname!.txt>>d:\111\333.bat
  21. echo exit) else (>>d:\111\333.bat
  22. echo v:\run\sed -i s/rendering^=3/rendering^=99/g v:\1aep\!aepname!.txt>>d:\111\333.bat
  23. echo exit>>d:\111\333.bat
  24. echo ^)>>d:\111\333.bat
  25. echo timeout /t ^2>>d:\111\333.bat
  26. echo v^:\run\sed ^-i s^/rendering^=3/rendering^=4^/g "\\file\vdisk\1aep\!aepname!.txt^">>d:\111\333.bat
  27. echo exit>>d:\111\333.bat
  28. ::start \\file\udisk!inipath!\gqhecheng.bat
复制代码
我想请教的是为什么^%ERRORLEVEL^%没有输出到333.bat下?
附333.bat的内容
  1. @echo off
  2. v:\run\sed -i s/rendering=2/rendering=3/g "d:\111\123.txt^"
  3. cd \log
  4. dir
  5. if  equ 0 (
  6. v:\run\sed -i s/rendering=3/rendering=4/g d:\111\123.txt
  7. exit) else (
  8. v:\run\sed -i s/rendering=3/rendering=99/g d:\111\123.txt
  9. exit
  10. )
  11. timeout /t 2
  12. cd \log
  13. dir
  14. if  equ 0 (
  15. v:\run\sed -i s/rendering=3/rendering=4/g v:\1aep\.txt
  16. exit) else (
  17. v:\run\sed -i s/rendering=3/rendering=99/g v:\1aep\.txt
  18. exit
  19. )
  20. timeout /t 2
  21. v:\run\sed -i s/rendering=3/rendering=4/g "\\file\vdisk\1aep\.txt"
  22. exit
复制代码

作者: gawk    时间: 2015-4-22 13:29

echo if %%ERRORLEVEL%% equ 0 (>>d:\111\333.bat
作者: chouxia    时间: 2015-4-22 13:33

回复 2# gawk


    输出到333.bat的时候就是%0%
作者: chouxia    时间: 2015-4-22 13:35

我在cmd窗口上用echo ^%errorlevel^% >1.txt输出成功 但在这里不行
不知道原因
作者: gawk    时间: 2015-4-22 13:36

能否把你希望得到的333.bat发出来,我试试
作者: chouxia    时间: 2015-4-22 13:41

@echo off
v:\run\sed -i s/rendering=2/rendering=3/g "d:\111\123.txt^"
cd \log
dir
if %errorlevel% equ 0 (
v:\run\sed -i s/rendering=3/rendering=4/g d:\111\123.txt
exit) else (
v:\run\sed -i s/rendering=3/rendering=99/g d:\111\123.txt
exit
)
timeout /t 2
cd \log
dir
if  equ 0 (
v:\run\sed -i s/rendering=3/rendering=4/g v:\1aep\.txt
exit) else (
v:\run\sed -i s/rendering=3/rendering=99/g v:\1aep\.txt
exit
)
timeout /t 2
v:\run\sed -i s/rendering=3/rendering=4/g "\\file\vdisk\1aep\.txt"
exit
就是希望这个%errorlevel%能够正常输出
环境是win2012
作者: gawk    时间: 2015-4-22 13:42

回复 3# chouxia
  1. @echo off
  2. echo @echo off>333.bat
  3. echo v:\run\sed -i "s/rendering=2/rendering=3/g" "d:\111\123.txt">>333.bat
  4. echo cd \log>>333.bat
  5. echo dir>>333.bat
  6. echo if %%ERRORLEVEL%% equ 0 (>>333.bat
复制代码
我这里测试正常

C:\Test>test.bat

C:\Test>type 333.bat
@echo off
v:\run\sed -i "s/rendering=2/rendering=3/g" "d:\111\123.txt"
cd \log
dir
if %ERRORLEVEL% equ 0 (
作者: gawk    时间: 2015-4-22 13:49

Win7、2003、2008测试没有发现问题,没有2012无法做试验。
作者: chouxia    时间: 2015-4-22 13:56

额 莫名其妙自己好使了。
奇怪  一会我从头跑一下
另外  gawk大大
我有一个帖子内容如下:
--------------------------------------------------------------------------------
本帖最后由 chouxia 于 2015-4-16 16:29 编辑
现在想由批处理输出下面代码到另一个批处理。
转义符搞的我蒙圈
麻烦帮我搞下,让我有个长经验值的机会。
echo for /f ^"tokens^=1^,2^,^* delims^==^"^  ^%%%a in^ ^(^'findstr ^"num^" ^/i ^\\file^\vdisk\1aep\^!aepname^!.txt^'^) do ^(set num^=^%%%b)>>\\file\udisk!inipath!\ak47.bat
echo for /f ^"tokens^=1^,2^,^* delims^==^"^  ^%%%c in^ ^(^'find ^"jishu^" ^/i ^\\file^\vdisk\1aep\^!aepname^!.txt^'^) do ^(set jishu^=^%%%d)>>\\file\udisk!inipath!\ak47.bat
在这个情况下^转义符是否生效?
为什么输出结果是:
for /f "tokens=1,2,* delims=="  %%b)
for /f "tokens=1,2,* delims=="  %%d)
-------------------------------------------------------------------
那个地方很让人蛋疼?
是转意符乱用吗?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2