我启动一个 shell,然后运行以下命令:
START "" /B php test.php>nul 2>&1
出于本文的目的,test.php由1行组成:file_put_contents(“test”,“test”);
您希望它立即创建一个名为test的文件,但事实并非如此.
相反,当我输入命令并按Enter键时,没有任何反应.但是,在同一个命令窗口中,如果再次按Enter键,脚本将运行.
我已尝试使用node,python2和python3的等效命令.它们都做同样的事情,虽然python3足够需要在运行脚本之前按两次回车键.
使用脚本解释器运行START / B时,这似乎是一个怪癖.如果我用.exe或.bat运行START / B,它会按预期运行.
现在,显然我不需要运行创建名为’test’的文件的后台进程.我需要它做的是启动一个用php编写的守护进程和一个用nodejs编写的守护进程,一个接一个地在同一个终端中.
我还注意到,如果我将这些命令写入批处理文件并通过双击批处理文件而不是从shell调用它来运行它们,那么它将按预期运行.
请帮忙.我已经和这个问题摔跤了2天了.
编辑:
我刚刚发现这个问题对我的计算机来说是独一无二的,在Windows 10上运行.我在Windows 7和Windows XP上试过,他们不需要额外的返回输入来运行脚本……
我刚尝试在安全模式下启动并清除路径变量.它仍然存在.
我想知道这是否是Windows 10的错误/功能?
我该怎么诊断和解决这个问题?
编辑2:
刚刚在Windows 8计算机上测试了相同的脚本,这意外地完成了我的Windows 10计算机所做的事情.所以看起来只有Windows 8和Windows 10才有这个问题……并且使用传统模式没有任何区别.
什么是FFFFFFFFFnnngggghhhrrr …我找不到任何人在任何地方报告这个问题.
这是一个gif动画,确切地说会发生什么:
证明脚本仅在第二个返回键上运行.
最佳答案 您可以尝试< NUL向命令发送额外的Enter.
start "" /b php test.php <NUL
Re:为什么会发生这种情况,对不起,我无法回答这一部分.错误?安全?未记载的功能? *耸肩*