0

我目前正在 AutoIt 中编写一个命令行应用程序,并且无法将其打印回我打开它的同一命令行。我的目标是让整个程序在单个 shell 中工作。这是我最初尝试的:

;myprogram.au3
$MyCommand = 'dir'
Run(@ComSpec & " /c " & $MyCommand, @SystemDir, @SW_Show)
Run(@ComSpec & " /c @echo off && echo Command completed successfully. && @echo on", @SystemDir, @SW_Show)

然后我编译它并通过命令行运行它(每个代码框代表一个新的 shell):

C:\Users\Matthew>myprogram.au3
C:\Users\Matthew>

打开新外壳 ↓</p>

Volume in drive C has no label.
Volume Serial Number is 0287-990C
Directory of C:\Users\Matthew
<Finishes normal dir command output>

完成后,列出我的目录中退出的文件和

打开新外壳 ↓</p>

The command completed successfully.

那个窗口立即关闭。

我正在寻找的输出是相同的,但在一个窗口中,如下所示:

C:\Users\Matthew>myprogram
*Output of dir command*
The command completed successfully
C:\Users\Matthew>
4

2 回答 2

1

您将项目编译为控制台应用程序以使其工作。您可以通过在编译时选中名称有点神秘的“创建 CUI 而不是 GUI EXE”复选框来做到这一点。然后myprogram.exe从 shell 调用而不是.au3.

#include <Constants.au3>

;myprogram.au3
$MyCommand = 'dir'
Local $foo = Run(@ComSpec & " /c " & $MyCommand & " \& echo Command completed successfully.", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

Local $output
While 1
    $output = StdoutRead($foo)
    If @error Then ExitLoop
    ConsoleWrite($output)
Wend
于 2012-08-15T22:28:39.013 回答
0

由于这个问题没有答案:

$MyCommand = 'ping www.google.com && ping www.stackoverflow.com'
Run(@ComSpec & " /c " & $MyCommand, @SystemDir, @SW_Show)

像这样,两个命令都在同一个 CMD-Box 中执行。

于 2015-08-05T08:03:47.707 回答