Board logo

标题: [已结]如何定义“>nul 1>nul 2>nul”字符串常量? [打印本页]

作者: StartFromBAT     时间: 2008-11-15 01:34    标题: [已结]如何定义“>nul 1>nul 2>nul”字符串常量?

写批处理时>nul 1>nul 2>nul用的比较频繁,所以想设置一个名字短一点常量等于它,到时调用就可以了。

例如: set 常量n等于 >nul 1>nul 2>nul,想输出时只要写入%n%就可以了。

但是,当我写像这样子:
set nn= >nul 1>nul 2>nul
echo %nn%

结果是显示什么都没有。

而这样写,在前面多加个引号
set nn= ">nul 1>nul 2>nul
echo %nn%

就显示 ">nul 1>nul 2>nul

请问:如何设置使得echo %nn%时显示的是>nul 1>nul 2>nul

还有就是请问: set nn=^  set nn=^^ 有什么特别? echo %nn% 为什么是那样的结果?


请达人指教!多谢!

[ Last edited by HAT on 2008-11-16 at 12:39 ]
作者: everest79     时间: 2008-11-15 05:34
set "nn=^>nul  2>nul"

>null=1>null
作者: radem     时间: 2008-11-15 09:59

@echo off
set "nn= ^>nul 1^>nul 2^>nul"
echo %nn%
pause

作者: radem     时间: 2008-11-15 10:02
建议楼主多看置顶贴
作者: StartFromBAT     时间: 2008-11-15 10:58
多谢两位大哥的热心解答。

囧我试过搜索set、搜索>nul,但是帖子太多了。。。囧

还有就是请教第二个问题, set nn=^ 和set nn=^^

或者我应该另起个标题提问?
作者: dikex     时间: 2008-11-15 13:14


  Quote:
Originally posted by everest79 at 2008-11-15 05:34 AM:
set "nn=^>nul  2>nul"

>null=1>null

这个无法实现楼主想免于繁琐的要求,另外楼主的写法本身也就繁琐了,可以直接写为 >nul 2>nul,或者 >nul 2>&1(句柄1是默认的);

应该直接进行赋值:
set "nn=>nul 2>&1"

用echo %nn% 不能显示?!其实这样才是正确的结果!
如果用上%nn%后echo的返回信息都不能屏蔽,那不就是和楼主原先的想法不同吗;
执行下面的就可以知道了:

dir c: %nn%
dir QQ: %nn%

第一个正常信息和第二个错误信息都没有了;
至于看%nn%值,应该用:
set nn
作者: StartFromBAT     时间: 2008-11-15 18:50
多谢dikex兄的解答,dikex兄很细心哦。果然如dikex兄所言。

everest79兄和radem兄可能只想实现显示 echo %nn%了。呵呵,是我误导了。

所以常量如果是>nul 2>nul ,那么它连自己也屏蔽了,echo显示不出来了。

btw, 为什么set nn=^ 会显示 More? 呢?结果如下:

C:\>set n=^
More?
More?_


C:\>set n
n=

NUMBER_OF_PROCESSORS=2


这一句“ NUMBER_OF_PROCESSORS=2 ” 是什么意思?
作者: dikex     时间: 2008-11-15 19:14
1  论坛搜索 ^ ,范围是批处理室
2  set n 表示列出所有以 n 开头的变量,而NUMBER_OF_PROCESSORS表示处理器个数,双核会被识别为2个
作者: StartFromBAT     时间: 2008-11-15 21:05
再次感谢,以后我提问前会多搜索的。