Windows cmd中的虚拟命令

art*_*stv 17 windows cmd batch-file nop

在linux中我们有makefile:

$(foreach A,a b,echo $(A) &&) true
Run Code Online (Sandbox Code Playgroud)

它工作和回声

a
b
Run Code Online (Sandbox Code Playgroud)

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

if 0==1 0
Run Code Online (Sandbox Code Playgroud)

所以makefile示例看起来像

$(foreach A,a b,echo $(A) &&) if 0==1 0
Run Code Online (Sandbox Code Playgroud)

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

Ray*_*hen 22

rem命令什么都不做.

  • (我被打断了)rem破坏了一个子壳...如果ERRORLEVEL 1(rem)ELSE(设置PROD = 1)将导致线路根本不运行.什么是一个很好的命令代替rem?echo不起作用,因为它总是输出一些东西. (3认同)
  • 我不会称它为命令,但它绝对没有任何作用. (2认同)

Ric*_*ven 17

call没有任何参数的命令什么都不做,并且没有任何附带效果rem.

例:

echo Wait for it...
call
echo Nothing happened!
Run Code Online (Sandbox Code Playgroud)

  • 空调也似乎将errorlevel设置为1.有些人可能会认为这是一个功能. (3认同)

小智 10

旧线程,新答案.

我一直在使用,cd.当我想在Windows中做任何事情(我经常这样做),因为" 将目录更改为自己 "根本没有任何副作用,据我所见.

  • @jpaugh并非所有命令。`break`或`echo`不会改变错误级别。有关[dbenham的错误级别]的更多信息,请访问(/sf/answers/2445639451/) (2认同)

Jir*_*ika 5

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

@擅长于长度和无所事事。它在命令行末尾运行良好。

rem很棒,有时command.com它曾经是一个命令,所以即使在输入/输出重定向的情况下它也能工作。今天(中cmd.exe)它开始注释,因此它只能在命令行末尾使用;任何重定向最终也会被注释掉。

echo.即使使用输入/输出重定向也可以工作。该点不会被打印,回显状态也不会改变。如果在命令批处理的开头使用,@echo.如果您不希望虚拟命令本身回显到标准输出,则可能需要拼写它;但这对于该echo命令来说并不特殊。

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

call是 Linux 中的对应项false。该命令认为它应该被告知要调用什么,但如果您没有提及任何内容,它会让您在没有任何错误消息的情况下继续,但将 ERRORLEVEL 设置为正值。它与重定向一起使用。

(本摘要借鉴了三个现有答案,以及另一个网站上另一个问题的答案。尝试一个老式的规范答案。)