找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22199|回复: 8

[其他] 【已解决】为什么这样的批处理转意符无法运行?

[复制链接]
发表于 2015-4-22 12:45:50 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-4-22 13:29:16 | 显示全部楼层
echo if %%ERRORLEVEL%% equ 0 (>>d:\111\333.bat

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-4-22 13:33:05 | 显示全部楼层
回复 2# gawk


    输出到333.bat的时候就是%0%
 楼主| 发表于 2015-4-22 13:35:02 | 显示全部楼层
我在cmd窗口上用echo ^%errorlevel^% >1.txt输出成功 但在这里不行
不知道原因
发表于 2015-4-22 13:36:58 | 显示全部楼层
能否把你希望得到的333.bat发出来,我试试
 楼主| 发表于 2015-4-22 13:41:21 | 显示全部楼层
@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
发表于 2015-4-22 13:42:30 | 显示全部楼层
回复 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 (
发表于 2015-4-22 13:49:41 | 显示全部楼层
Win7、2003、2008测试没有发现问题,没有2012无法做试验。
 楼主| 发表于 2015-4-22 13:56:41 | 显示全部楼层
额 莫名其妙自己好使了。
奇怪  一会我从头跑一下
另外  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)
-------------------------------------------------------------------
那个地方很让人蛋疼?
是转意符乱用吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:15 , Processed in 0.078709 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表