在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中是否有任何虚拟命令(实际上什么都不做)?或者任何好的黑客?
答案 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另一个站点上的另一个问题。尝试使用老式的规范答案。)