【问题标题】:Start command in bat file create a zero byte logbat 文件中的启动命令创建一个零字节日志
【发布时间】:2018-02-07 23:42:49
【问题描述】:

我使用Start 命令(在命令提示符中)同时执行一些程序。我只是使用了这样的命令:

start time_calulation.pl > d:\Public\Sample-Programs\testlog.txt
  • 程序正确执行,但testlog.txtlog 文件没有数据,它是一个0(零)字节文件。

  • 没有Start,日志文件创建完美,但我需要使用Start

请任何人帮助我找到解决方案。

【问题讨论】:

  • 如果你尝试会发生什么:perl time_calulation.pl > d:\Public\Sample-Programs\testlog.txt?

标签: windows perl batch-file command-line


【解决方案1】:

您帖子中的启动命令告诉 Windows 执行以下操作:使用“start”打开新的命令提示符,在新的命令提示符下运行程序“time_calulation.pl”并通过管道传输“start”的 STDOUT命令到文件“d:\Public\Sample-Programs\testlog.txt”。

我的第一个想法是修改 Perl 脚本来处理创建日志文件。由于您尚未共享该脚本的源代码,因此我将提供不同的解决方案。

首先,创建调用 Perl 脚本的批处理文件 (time_calulation.bat),并将 Perl 脚本的 STDOUT 通过管道传输到文件中。从您的示例中,批处理文件将包含:

perl time_calulation.pl > d:\Public\Sample-Programs\testlog.txt

人们可能会想这样做:

start time_calulation.bat

但是,新打开的命令提示符并没有消失。我猜你确实希望它在运行 Perl 脚本后消失。此行为在 start 命令的帮助中进行了描述。它指的是 cmd.exe 的 /K 选项。如果您查看 cmd.exe 的帮助,有一个 /C 选项可以导致命令提示符终止。

所以我相信下面会做你想做的事:

start cmd.exe /C time_calulation.bat

这将打开一个新的命令提示符来运行批处理文件,并在批处理文件完成后关闭该新的命令提示符。该批处理文件正在运行 Perl 脚本并将 Perl 脚本的 STDOUT 传送到文件中。

【讨论】:

  • 如果你引入cmd命令,你可以简单地cmd /c "perl time_calulation.pl > d:\Public\Sample-Programs\testlog.txt" (doesn't even need the start`命令)(注意引号!)
猜你喜欢
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2020-12-19
相关资源
最近更新 更多