我目前正在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>
打开新shell ↓
Volume in drive C has no label.
Volume Serial Number is 0287-990C
Directory of C:\Users\Matthew
<Finishes normal dir command output>
完成后,列出我目录中退出的文件和
打开新shell ↓
The command completed successfully.
该窗口立即关闭。
我正在寻找的输出是相同的,但在一个窗口中,像这样:
C:\Users\Matthew>myprogram
*Output of dir command*
The command completed successfully
C:\Users\Matthew>
答案 0 :(得分:1)
您将项目编译为控制台应用程序,以使其正常工作。您可以通过在编译时检查稍微加密命名的“Create CUI而不是GUI EXE”复选框来执行此操作。然后从shell调用myprogram.exe
而不是.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
答案 1 :(得分:0)
由于这个问题没有答案:
$MyCommand = 'ping www.google.com && ping www.stackoverflow.com'
Run(@ComSpec & " /c " & $MyCommand, @SystemDir, @SW_Show)
像这样两个命令都在同一个CMD-Box中执行。