请教Windows批处理专家,echo中的这个1哪里来的?
319 9
[1 楼] duoduobear [Canon论坛版主]
23-9-30 02:30
如图:

[10 楼] Trompette [泡菜]
23-10-7 13:12
稍有基础的人都知道>是输出重定向
版主并不是问 1> 是什么意思,而是问为什么批处理里没写 1>,但在执行时回显会出现 1>

因为命令回显是根据命令解释后的结果回显,而不是直接重复文本
在批处理的解释过程中,解释器先读懂这里需要输出重定向,然后完成了对应的语法树
最后根据语法树生成的回显,就不会漏掉 1> 了
[9 楼] 中宏丽舍 [禁言中]
23-10-7 11:42
又想起刚进机房就格式化C盘装DOS,因为每台电脑配置都不一样,然后改himem.sys和autoexec.bat的日子
[8 楼] pingxh [泡菜]
23-10-7 11:10
现在又玩起dos来了。
记得当年写批处理的时候,第一行一般是: echo  off ,关闭提示的。没求用。
pingxh 编辑于 2023-10-07 11:19
[7 楼] 秋日午后的阳光 [泡菜]
23-10-7 09:59
会点windows命令行或linux shell的应该都懂这个
[6 楼] duoduobear [Canon论坛版主]
23-10-1 00:46
benniewang 发表于 2023-09-30 03:47
Numeric handles:
STDIN  = 0  Keyboard input
STDOUT = 1  Text output
STDERR = 2  Error text output
UNDEFINED = 3-9 (In PowerSh...

看了这个链接才恍然大悟,这是重定向的功能,不是echo的功能,所以我查echo的帮助信息没有找到答案。
十分感谢!
[5 楼] Trompette [泡菜]
23-9-30 09:41
duoduobear 发表于 2023-09-30 02:30
如图:

我自己的 windows 10 19045 也是这样,cmd 解释器一共自动插入了3个字符,“空格+1+重定向符”
只能解释成 cmd 解释器的回显并不简单显示命令行,而是显示解释器预处理后(显式重定向)的命令行
[4 楼] 臭手 [老坛泡菜]
23-9-30 08:40
duoduobear 发表于 2023-09-30 02:30
如图:

半桶水的表示,可能有几个意思:
1. 楼上大佬说的,以文本格式重定向赋值给DUT_Name.txt;
2. 楼上大佬说的,输出正常时的赋值。如果是STDERR则用2来赋值ERR信息,这里大约是STDERR直接忽略不要了;
3. 重定向过程同时显示在屏幕上,貌似重定向赋值时是只干活不显示,加个1就是同时显示。

上面3种可能大约都可以省略掉这个1,貌似都没啥影响。
瞎掺和,不一定对。
[3 楼] benniewang [资深泡菜]
23-9-30 03:47
Numeric handles:

STDIN  = 0  Keyboard input
STDOUT = 1  Text output
STDERR = 2  Error text output

UNDEFINED = 3-9 (In PowerShell 3.0+ these are defined)
[2 楼] 求一个不重复的注册名 [泡菜]
23-9-30 02:57
我的理解1指的是stdout(2就是stderr)