![为什么从 .bat 文件运行时 Windows 命令行会更改命令?](https://linux22.com/image/543631/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BB%8E%20.bat%20%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E6%97%B6%20Windows%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BC%9A%E6%9B%B4%E6%94%B9%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
如果我想运行命令
md5deep -rb . | find /I ".jpg" | sort > local.md5
我从命令提示符运行它,它显示的内容与我输入的内容完全一样,但是当我将它放入 .bat 文件中并运行它时,我看到的内容如下:
md5deep -rb . | find /I ".jpg" | sort 1>local.md5
好像它在前面插入了制表符|
,然后变成>
了1>
。为什么?一开始我以为是编码问题,但这个文件只是一个简单的 ANSI 文件。
这与.bat 文件内部的@@
转换有关系吗?@
答案1
没什么可担心的。这只是CMD
当您不使用以下代码抑制“跟踪”输出时 Windows 解析器输出行的方式:
@echo off
或者
@commandname
我不确定您指的是@@
versus什么@
(可能除了上面的)。我不知道 有什么特别之处,除非您将其与变量名versus@@
混淆。%%
%
答案2
1> 指的是标准输出如何在 bat 文件中被重定向。
您有两个通道,一个用于标准输出 (1>),另一个用于标准错误输出 (2>)。它们使用 1> 或 2> 进行处理,并提供两种不同类型的执行反馈。我有以下不同重定向排列的列表:
command > file Write standard output of command to file
command 1> file Write standard output of command to file (same as previous)
command 2> file Write standard error of command to file (OS/2 and NT)
command > file 2>&1 Write both standard output and standard error of command to file (OS/2 and NT)
command >> file Append standard output of command to file
command 1>> file Append standard output of command to file (same as previous)
command 2>> file Append standard error of command to file (OS/2 and NT)
command >> file 2>&1 Append both standard output and standard error of command to file (OS/2 and NT)
commandA | commandB Redirect standard output of commandA to standard input of commandB
commandA 2>&1 | commandB Redirect standard output and standard error of commandA to standard input of commandB (OS/2 and NT)
command < file command gets standard input from file
command 2>&1 command's standard error is redirected to standard output (OS/2 and NT)
command 1>&2 command's standard output is redirected to standard error (OS/2 and NT)
这是来自 Rob van der Woude 关于 Win32 脚本的优秀网站: http://www.robvanderwoude.com/redirection.php
抢