Windows cmd中的虚拟命令

时间:2011-08-25 12:41:58

标签: windows batch-file cmd nop

在linux中我们有makefile:

$(foreach A,a b,echo $(A) &&) true

它的工作原理和回声

a
b

现在我们想将它移植到Windows。我在Windows中发现的最短命令什么都不做:

if 0==1 0

所以makefile示例看起来像

$(foreach A,a b,echo $(A) &&) if 0==1 0

Windows中是否有任何虚拟命令(实际上什么都不做)?或者任何好的黑客?

4 个答案:

答案 0 :(得分:19)

rem命令不执行任何操作。

答案 1 :(得分:17)

没有任何参数的call命令不执行任何操作,并且没有rem所带来的附带效果。

示例:

echo Wait for it...
call
echo Nothing happened!

答案 2 :(得分:6)

旧线程,新答案。

我一直在使用cd.,因为“将目录更改为自身”根本没有任何副作用可以看到。

答案 3 :(得分:0)

对于哪个虚拟命令最短没有唯一的答案,因为虚拟命令有多种不同的目的(上下文),它们可能导致不同的选择。从最好到最坏列出。

@擅长,无所事事。 在命令行末尾效果很好。

rem很棒,而且在command.com年代它曾经是一个命令,因此即使在输入/输出重定向的情况下也可以使用。今天(在cmd.exe中,它开始发表评论,因此它只能在命令行末尾使用 ;任何重定向也会最终被注释掉。

echo.甚至可以通过输入/输出重定向使用。该点不会被打印,回声状态不会改变。如果在命令批处理的开头使用了该命令,并且不希望将虚拟命令本身回显到标准输出,则可能需要将其拼写为@echo.。但这对echo命令并不特殊。

cd.是Linux中true的对应物。挑战OP的框架,它实际上做了一些特定的事情:将ERRORLEVEL设置为0。它可以与重定向一起使用。

call是Linux中false的对应物。该命令认为它应该被告知要调用的内容,但是如果您未提及任何内容,它可以让您继续执行而不会出现任何错误消息,而是将ERRORLEVEL设置为正值。它适用于重定向。

(此摘要使用了三个现有的答案,再加上this answer另一个站点上的另一个问题。尝试使用老式的规范答案。)