cmd命令里面set count==%%a命令作用是什么?

我真的好奇为什么我的字符串替换过程在解析包含任何特殊字符(包括感叹号)的文本文件时起作用。我预计延迟变量扩展将关闭符号,百分号等特殊的含义,但反而会失败感叹号...


后1年半,我不得不再次使用这个代码片断。请参阅另外两个处理有毒字符的示例。第一个使用临时启用延迟扩展(请参阅Ansgars答案),第二个使用CALL。两者都将解析当前目录中和下方的非空文件的路径和名称,但不会将驱动器盘符和路径拖尾到当前目录。

实施例#2(较慢,封装需要双引号):用于

}

> 将命令的执行结果重定向到设备或文件
>> 将命令的执行结果追加到文件末尾

基础知识1里的例子大家肯定都记得(不记得的请按’Home’)
那么问题来了,当我们需要把这些信息写入到其他地方去的时候,该怎么办呢?

此时命令的输出是这样的,只留下了返回值


这是原输出(不包括红字......)

那么本来该有的玩意儿们都到哪里去了呢?
实际上‘Echo;Hello’的执行结果到了a.txt中,不过我懒得打开看了,各位无聊的话可以试一试
EchoYes’的执行结果呢,到了nul中,可是为什么找不到呢?还记得吗,nul是空设备,也就相当于一个不存在的设备,因此执行结果就这样消失了(利用NUL的这一点,我们常常用它来屏蔽输出)
当然,为了装13,你也可以用aux或com1来屏蔽输出,如果出现了副作用,请告诉我

这种将命令输出转移到其他设备的过程,就被称作重定向

这里的’>>’就是"符号"了,大家都对它非常熟悉吧

第一行代码,将Echo;Hello的标准输出重定向到了a.txt,可能有人会很疑惑,不是说重定向符号的使用格式是’句柄&符号&设备’吗怎么没看见句柄啊? 各位莫急,将回显打开试试?

看,句柄在这里!隐藏地真深啊
CMD看我们没有指定句柄,就为自动它加上了1,并且将重定向移到了代码后方

第二行代码,将’EchoYes’的标准输出重定向到了NUL(空设备),从而起到了屏蔽输出的效果果,不过如果你用>nul是起不到这样的效果的,为什么呢?
笑而不语,读者自己思考思考
(PS 句柄2,不是任何重定向符号的默认句柄)

你可以多次尝试运行上面的代码

PS >>和>在使用时需要注意,>>还好,顶多出来了一个超大的txt...但>的使用一定要小心,不然万一往重要文件里写入了点什么......什么,你还不明白?你一定没有按我上面说的那样做一做

有大量命令的输出需要重定向可以这样
代码很多时效率会显著提升


}

我要回帖

更多关于 setcolumncount 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信