Board logo

标题: [文本处理] 用echo输出数字到文本也需要转义吗? [打印本页]

作者: cjiabing    时间: 2011-5-28 03:06     标题: 用echo输出数字到文本也需要转义吗?

本帖最后由 pcl_test 于 2016-11-23 10:50 编辑

用echo输出文件时,数字也转义?

把“WScript.CreateObject("WScript.Shell").Run "cmd.exe /c "%##0%BmpProgram\BalloonTip.exe" ""!xtqp_s!"" !xtqp_n! !xtqp_t! 1", 0”写入文件notice.vbs,怎么写?
  1. echo WScript.CreateObject("WScript.Shell").Run "cmd.exe /c "%##0%BmpProgram\BalloonTip.exe" ""!xtqp_s!"" !xtqp_n! !xtqp_t! 1", 0>>"%##0%BmpProgram\notice.vbs"
复制代码
以下输出为空,问题在后面的“,”和“0”上,在它们前面添加转义符“^”即可。
再来一个:
  1. echo set /a js+=1>>"%##0%BmpProgram\Baoshi.bat"
复制代码
正确的:
  1. echo set /a js+=^1>>"%##0%BmpProgram\Baoshi.bat"
复制代码

作者: zz100001    时间: 2011-5-28 03:11

擦,刚刚看了几集火影,发现居然这么晚还有人在发帖!
这个是基础问题,在数字和大于号之间加个空格就好了。
作者: applba    时间: 2011-5-28 04:14

本帖最后由 applba 于 2011-5-28 04:15 编辑

楼主火星了:
没事不要吧数字和重定向符号合体,否则数字会被解释成句柄。

正确的写法:
在他们之间加上空格(分隔符)即可。
  1. echo set /a js+= 1 >>"%##0%BmpProgram\Baoshi.bat"
复制代码
或者
  1. echo set /a js+= 1 1>>"%##0%BmpProgram\Baoshi.bat"
复制代码

作者: Hello123World    时间: 2011-5-28 16:12

3# applba
句柄是什么意思?
0>
1>
2>
哪里可以查看他们的帮助信息。
作者: cjiabing    时间: 2011-5-28 17:08

晕,个个都知道,看来只是我孤陋寡闻了!~
你们一说,我想起了这个东东:
echo %var%>nul 2>nul
……
作者: CrLf    时间: 2011-5-28 17:15

4# Hello123World


0是输入句柄,句柄1是正确输出,句柄2是错误输出,3~9由命令自行定义(说是这么说,反正我是从来没碰到过的),经常被用来进行句柄备份,超过9的句柄不存在,严格说是应该存在更高的句柄,但是我们至今无法对其进行任何操作。
5# cjiabing


印象中echo从来只有正确回显,没有错误输出,所以echo str>nul就够了,不过既然echo了又把它屏蔽,有什么意义呢?
作者: applba    时间: 2011-5-28 20:15

或者说,你转义的是句柄,而不是简单的数字。
作者: cjiabing    时间: 2011-5-28 21:52

6# zm900612
哈哈,我是举例说意思——句柄,就如applba所说的,这里的数字已经不单纯是数字的了!~
作者: cjiabing    时间: 2011-5-28 22:18

7# applba
最近一年,认真学习的时间少了,自己摸索的时间多了,一些基础的东西没学好,所以有这种奇怪的反应,谅解谅解!~
确实,在写了几个比较大的程序之后,感觉自己的技术已经足够处理一些常见问题了,没有更大的要求去学习一些自己未掌握的东西。如果有问题,也能够在实践中不停地摸索,一般都可以迎刃而解。特别是在写batmplayer的过程中,积累了相当多的经验,也总结了一些常用的代码,比如随机乱序、结束指定进程等等。但这一些并不能掩盖自己一些基础知识的不足,像现在这个问题,当时百思不得其解,为什么数字也要转义符?现在看来,不过是在这种特定的情形下变成了句柄,一个很简单的问题。所以说,批处理的学习,也是终身学习!~
作者: Batcher    时间: 2011-5-29 19:26

9# cjiabing


结束指定进程用的哪个方法?
作者: cjiabing    时间: 2011-5-30 09:36

10# Batcher
主要用tasklist或者taskkill就可以了,有时候也可以用wmic,只是要用for进行更详细的分析。比如有多个cmd,只结束指定标题的、指定路径的、指定Pid的、指定服务名的进程等等,都是很容易做到的,我前面也发过《进程判断常用代码 》,对你来说这个应该不是很难。

但我有个疑问,(我还没详细看过句柄),为何echo 1>txt.txt没有问题,而上面那些例子却有问题?也就是,上面情况下“数字>”变成了句柄?




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