从 nsExec::Exec 获取输出

get output from nsExec::Exec

我正在尝试从 nsExec 获取标准输出。例如,这应该在 MessageBox 中显示当前日期:

  nsExec::Exec 'date /t'
  Pop [=11=]
  MessageBox MB_OK "[=11=]"

显然你不是那样做的。它只显示 1。从 nsExec::Exec

获取输出的正确方法是什么

::Exec 只是隐藏标准输出,你想要 ::ExecToStack。

语法如下所示:

nsExec::Exec '"App"' 
Pop [=10=] ; Exit code / error

nsExec::ExecToStack '"App"' 
Pop [=10=] ; Exit code / error
Pop  ; stdout output

您收到错误代码是因为 time 是 cmd.exe 中的内置命令,而不是应用程序。您需要调用 cmd.exe 来执行该命令:

nsExec::ExecToStack '"$sysdir\cmd.exe" /C time /t' 
Pop [=11=] ; Exit code / error, should be 0
Pop  ; Time

如果你只想知道时间,你也可以这样做:.

System::Call 'kernel32::GetLocalTime(p@r0)'
System::Call '*[=12=](&i2, &i2, &i2, &i2, &i2.r4, &i2.r5, &i2.r6, &i2)'
IntFmt  "%.2d"  ; 0 pad
IntFmt  "%.2d"  ; 0 pad
MessageBox mb_ok ::