【问题标题】:Transfer into a PHP array the output of a Batch (.bat) file将批处理 (.bat) 文件的输出传输到 PHP 数组
【发布时间】:2014-01-15 16:55:13
【问题描述】:

我有这个批处理文件,它通过文件夹中包含的文件查找字符串。

@echo off
pushd "%1"
findstr /m /C:%2 *
popd

如果我从命令行执行它,它会打印包含搜索字符串的文件的名称。

在 PHP 中,批处理文件正在使用以下命令执行:

system("cmd /c C:/path/myFile.bat C:/path toSearch", $returned);

问题在于$returned 元素是字符串而不是数组。 它的每个元素都由一个空格分隔。

我正在考虑分解它,但这是不可能的,因为某些文件还包含空格。

有趣的是,在我打印结果字符串的页面的源代码中,每个元素实际上都是一行,如下所示:

element1
second element
third element

但是生成的 HTML 代码是这样的:

element1 second element third element

有什么建议吗?

【问题讨论】:

  • 所以你的分隔符实际上是 \n 作为换行符,而不是空格(不知道 HTML 不理解换行符有多么有趣,如果它们没有被标记明确表示,断线。所以如果没有
    ,网页不会断线)
  • 我已尝试按照建议的here 使用"\n" 来展开它,但它不起作用,所以我不确定它实际上是如何在内部分隔行的。
  • 那么当你在\n\n\r 上爆炸时输出是什么?
  • 好的,问题是system的使用。我将其更改为exec,现在它以数组的形式返回它。

标签: php batch-file command-line windows-console


【解决方案1】:

解决了。

问题是system 自动打印执行文件的输出。 我将其更改为exec,现在$returned 变量中返回了一个数组。

exec("cmd /c C:/path/myFile.bat C:/path toSearch", $returned);

More info.

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多