使用php / node / python脚本的START / B无法按预期工作

时间:2015-12-07 01:30:32

标签: 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键时,没有任何反应。但是,在同一个命令窗口中,如果我再次按下回车键,脚本将会运行。

我尝试过与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动画:

enter image description here

证明脚本仅在第二个返回键上运行。

4 个答案:

答案 0 :(得分:1)

您可以尝试<NUL向该命令发送额外的 Enter

start "" /b php test.php <NUL

Re:为什么发生了这种情况,对不起,我无法回答这一部分。错误?安全?未记载的功能? *耸肩*

答案 1 :(得分:0)

start /b启动另一个进程,该进程与原始Windows共享输入和输出。 (要验证执行start /b "" prompt $G并反复按Return键)

最好在另一个Windows中启动辅助进程(无/b - 使用/min代替最小化运行它)。您还应该给它一个Exit,否则它会保持打开状态:

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

注意:如果您不想转发>&|,...之类的特殊字符,它们将由&#34; start&#34处理; - 换句话说,在原始环境中,而不是在新开始的过程中。

答案 2 :(得分:0)

我在这里看不到任何问题 也许您已经通过一些测试损坏了cmd.exe 对于测试,我打开了一个新的cmd窗口

我用

进行了测试

test.php的

<?php
echo "Hello";
?>

start "myTitle" /b php test.php

答案 3 :(得分:0)

我遇到了非常类似的问题,在试图找到答案时偶然发现了这个问题。

在我的情况下,我试图使用&#39; popen&#39;从PHP运行Windows命令 我最近从8升级了Wampserver和Windows 10 我的代码在升级之前工作,随后超时 我在命令行上也发现了同样的问题 - 必须输入换行符才能接收输出。

我的解决方案有两个方面:
1.在命令行中,我发现添加&#39; /等等。开关固定了。
2. PHP使用的shell具有与cmd shell不同的PATH。我的php.exe路径定义了两次,我的旧版Wampserver有一个旧条目。所以我删除了它。注意我必须重新启动PC才能正确更新路径。