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

[文本处理] 批处理转义字符和重定向怎样把百分号写入文件?

我想要的是把批处理把这行语句执行完后,
在C盘创建一个"123.bat",
里面的内容为:"set hour=%time:~1,1%",

把下面这行命令在CMD中运行后能成功,C盘能生成一个"123.bat"并且里面的内容也是"set hour=%time:~1,1%",(第二个百分号前加了一个转义字符,不然重定向出来就不是"%time:~1,1”)
echo set hour=%time:~1,1^% >c:\123.bat

问题来了,只要把这行命令放到批处理中,那重定向符号仿佛没起到作用,
屏幕上会显示:set hour=time:~1,1\123.bat



请大家帮忙看一看   希望知道解决方法的人赐教一下  非常感谢!

  1. @echo off
  2. echo set hour=%time:~1,1^% >c:\123.bat
  3. pause
复制代码

  1. @echo off
  2. >c:\123.bat echo set hour=^%time:~1,1^%
  3. pause
复制代码
---学无止境---

TOP

非常感谢

真是高手哇!
请问像我那样为什么不会成功啊?是错在哪里了?

TOP

回复 3楼 的帖子

> 这个符号,用echo 现实,如果前面数字是1 2 等,就会出错
  1. echo 2>test.txt
复制代码
改为
  1. >test.txt echo 2
复制代码
就不会
---学无止境---

TOP

晕了 我的问题又来了 又有新问题了

想要在文本里写入“if %hour% leq 6”,最后“%hour%”显示不出来
显示:if  leq 6   而不显示:if %hour% leq 6

这样不行:
  1. @echo off
  2. >123.txt echo if %hour% leq 6
  3. start 123.txt
复制代码


这样也不行:
  1. @echo off
  2. echo if %hour% leq 6 >123.txt
  3. start 123.txt
复制代码



请赐教啊!感谢你!

TOP

在所有%前面添加转义符^

TOP

回复 5楼 的帖子

  1. @echo off
  2. >123.txt echo if %%hour%% leq 6
  3. start 123.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

非常感谢!

问题全部解决了!感谢!

TOP

如果要将批处理内容输出到文件,而且内容很多,推荐使用for /f:
  1. @echo off
  2. (for /f "delims=" %%a in ('more +3^<"%~f0"') do echo.%%a)>c:\123.bat
  3. pause&exit
  4. @echo off&setlocal ENABLEDELAYEDEXPANSION
  5. rem 测试用
  6. set a=1&set b=%time:~0,1%
  7. echo %b%|find /i "123"
  8. set/a a=!a!+1
  9. echo %a%
  10. pause
复制代码
ps:在主代码部分开变量延迟时,需要对输出内容中的!做转义^
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表