Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php/node/python脚本启动/B';I don’我没有按预期工作_Php_Windows_Shell_Batch File_Command Line - Fatal编程技术网

使用php/node/python脚本启动/B';I don’我没有按预期工作

使用php/node/python脚本启动/B';I don’我没有按预期工作,php,windows,shell,batch-file,command-line,Php,Windows,Shell,Batch File,Command Line,我启动一个shell并运行以下命令: START "" /B php test.php>nul 2>&1 在本文中,test.php由1行组成:file_put_contents(“test”,“test”) 您可能希望它立即创建一个名为test的文件,但它没有。 相反,当我输入命令并按enter键时,什么也没有发生。但是,在同一命令窗口中,如果我再次按enter键,脚本将运行 我用node、python2和python3尝试了等效的命令。它们都做同样的事情,尽管pytho

我启动一个shell并运行以下命令:

START "" /B php test.php>nul 2>&1
在本文中,test.php由1行组成:file_put_contents(“test”,“test”)

您可能希望它立即创建一个名为test的文件,但它没有。 相反,当我输入命令并按enter键时,什么也没有发生。但是,在同一命令窗口中,如果我再次按enter键,脚本将运行

我用node、python2和python3尝试了等效的命令。它们都做同样的事情,尽管python3在脚本运行之前需要按两次enter键

在使用脚本解释器运行START/B时,这似乎是一个怪癖。如果我使用.exe或.bat运行START/B,则它将按预期运行

现在,显然我不需要运行后台进程来创建名为“test”的文件。我需要它做的是在同一个终端中依次启动用php编写的守护进程和用nodejs编写的守护进程

我还注意到,如果我将这些命令写入一个批处理文件,并通过双击批处理文件而不是从shell调用来运行它们,那么所有这些命令都会按预期运行

请帮忙。我已经为这个问题绞尽脑汁两天了

编辑:

我刚刚发现这个问题是我运行在Windows10上的计算机所独有的。我在Windows7和WindowsXP上试过,它们不需要我额外的返回输入来运行脚本

我刚刚尝试在安全模式下启动并清除路径变量。但它依然存在。 我想知道这是否是Windows10的一个bug/功能? 我该如何诊断和修复这个问题

编辑2:

刚刚在Windows8机器上测试了相同的脚本,它出乎意料地与我的Windows10机器完全相同。所以看起来只有Windows 8和Windows 10有这个问题。。。而使用传统模式也没什么区别。 什么是FFFFFFFFNNNGGGGHHRR。。。我找不到任何人报告这个问题

下面是一个gif动画,精确描述了发生的情况:


证明脚本仅在第二次按回车键时运行。

start/b
启动另一个进程,该进程与原始窗口共享输入和输出。(要验证do
start/b”“提示$G
并反复按Return键)

最好在另一个窗口中启动辅助进程(无
/b
-使用
/min
来运行它)。您还应该让它退出,否则它将保持打开状态:

start /min "" echo hello^>hello.txt^&Exit

注意:如果您没有逃逸特殊字符,如
&
,…,它们将由“开始”处理-换句话说,在您的原始上下文中,而不是在新启动的进程中。

您可以尝试
我在这里看不到任何问题。
也许您的cmd.exe被一些测试损坏了。
对于测试,我打开了一个新的cmd窗口

我试过了

test.php
我也遇到了类似的问题,在试图找到答案时,我偶然发现了这个问题

在我的例子中,我试图使用“popen”从PHP运行windows命令。
我最近从8升级了Wampserver和Windows 10。
我的代码在升级之前工作,随后超时。
我在命令行上也发现了同样的问题——必须输入新行才能接收输出

我的解决方案有两个方面:
1.在命令行中,我发现添加“/wait”开关修复了这个问题。

2.PHP使用的shell与cmd shell的路径不同。我的php.exe路径定义了两次,我的旧版本Wampserver有一个旧条目。所以我把它拿走了。注意:我必须重新启动PC才能正确更新路径。

如果删除
>NUL2>&1
,它会做什么?这肯定与
>NUL2>&1
有关。我认为第一个
>nul
没有正确地转义,请尝试。尝试自己直接将其输入控制台,您应该会体验到相同的异常行为:START”“/B php test.php>nul 2>&1不会在第一次返回时运行。我已经修改了我的帖子,看起来它对我来说是独一无二的,但仍然无法修复它。。。请帮帮我。好吧,我刚刚意识到这个问题不是我独有的,而是Windows 8和10操作系统的问题。完全不知所措…你在运行哪个操作系统?我只在Windows 8和10上有这个问题,恐怕它的运行与以前完全一样。仍然需要在以下空白处按return键command@hedgehog90请参阅我的编辑。我们将反复试验这件事。:)我刚刚给了你50分,我怀疑如果不直接问微软,我们是否能弄清原因。感谢您的帮助:)问题是我实际上想要运行的php脚本是一个套接字侦听器,额外的CMD窗口需要保持打开状态。我想我在我的OP中说过,我还需要一个运行的节点脚本实例,这样总共可以创建3个CMD窗口。好吧,然后忘记退出。关键是要在它自己的窗口中运行脚本-没有“共享输入”(我没有php,但我很确定这不是问题所在。是“共享输入”起作用-很奇怪)
start "" /b php test.php <NUL
<?php
echo "Hello";
?>
start "myTitle" /b php test.php