标题: [文本处理] 批处理转义字符和重定向怎样把百分号写入文件? [打印本页]
作者: cc5511 时间: 2010-12-25 12:29 标题: 批处理转义字符和重定向怎样把百分号写入文件?
我想要的是把批处理把这行语句执行完后,
在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
请大家帮忙看一看 希望知道解决方法的人赐教一下 非常感谢!
- @echo off
- echo set hour=%time:~1,1^% >c:\123.bat
- pause
复制代码
作者: broly 时间: 2010-12-25 12:52
- @echo off
- >c:\123.bat echo set hour=^%time:~1,1^%
- pause
复制代码
作者: cc5511 时间: 2010-12-25 12:59 标题: 非常感谢
真是高手哇!
请问像我那样为什么不会成功啊?是错在哪里了?
作者: broly 时间: 2010-12-25 13:02 标题: 回复 3楼 的帖子
> 这个符号,用echo 现实,如果前面数字是1 2 等,就会出错
如复制代码
改为复制代码
就不会
作者: cc5511 时间: 2010-12-25 13:40 标题: 晕了 我的问题又来了 又有新问题了
想要在文本里写入“if %hour% leq 6”,最后“%hour%”显示不出来
显示:if leq 6 而不显示:if %hour% leq 6
这样不行:
- @echo off
- >123.txt echo if %hour% leq 6
- start 123.txt
复制代码
这样也不行:
-
- @echo off
- echo if %hour% leq 6 >123.txt
- start 123.txt
复制代码
请赐教啊!感谢你!
作者: broly 时间: 2010-12-25 14:24
在所有%前面添加转义符^
作者: Batcher 时间: 2010-12-25 15:56 标题: 回复 5楼 的帖子
- @echo off
- >123.txt echo if %%hour%% leq 6
- start 123.txt
复制代码
作者: cc5511 时间: 2010-12-25 16:46 标题: 非常感谢!
问题全部解决了!感谢!
作者: hanyeguxing 时间: 2010-12-25 17:22
如果要将批处理内容输出到文件,而且内容很多,推荐使用for /f:- @echo off
- (for /f "delims=" %%a in ('more +3^<"%~f0"') do echo.%%a)>c:\123.bat
- pause&exit
- @echo off&setlocal ENABLEDELAYEDEXPANSION
- rem 测试用
- set a=1&set b=%time:~0,1%
- echo %b%|find /i "123"
- set/a a=!a!+1
- echo %a%
- pause
复制代码
ps:在主代码部分开变量延迟时,需要对输出内容中的!做转义^
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |