Interface com o Sistema Operacional


native! call

Executa um comando em shell. Na maior parte dos casos, é a mesma coisa que escrever no commando prompt (CLI), mas tem algumas particularidades.

O código abaixo abre o Windows Explorer:

>> call "explorer.exe"
== 11272                        ; este é o número do processo aberto.

Isso também funciona:

>> str: "explorer.exe"
== "explorer.exe"

>> call str
== 11916

Entretanto, o código abaixo cria o processo, mas não abre o Notepad na tela:

>> call "notepad.exe"
== 4180

Se você busca um comportamento mais próximo a digitar o comando no shell, você deve usar o refinamento /shell:

>> call/shell "notepad.exe"                ;abre o notepad na tela
== 6524

Outros refinamentos:

 /wait

Roda o comando e espera até o comando terminar sua execução. Cuidado: se você usar /wait em um commando que você não pode terminar (como call "notepad.exe" acima), o Red vai esperar... e esperar... indefinidamente.

 /input - nós fornecemos uma string!, um file! ou um  binary!, que vai ser redirecionado para stdin.

Não entendo este comando, me parece a mesma coisa que simplesmente call, uma vez que nós fornecemos a string ou o arquivo de qualquer forma.

 /output

Nós fornecemos uma string! , file! ou um binary! que vai receber o stdout redirecionado do comando. Note que o output é appended.

O código a seguir cria uma arquivo de texo ou o output do shell para o comando "dir" (uma lista de todos os arquivos e pastas do path corrente):

>> call/output "dir" %mycall.txt
== 0

Este cria uma (longa) string com os resultados de "dir":

>> a: ""
== ""

>> call/output "dir" a
== 0

>> a
== { Volume in drive C has no label.^/ Volume Serial Number is BC5 ;...

 /show

Força a exibição da janela de shell (Windows only). Seu script vai rodar com o command prompt do Windows aberto.

>> call/shell/show "notepad.exe"
== 12372

 /console

Roda o comando com o I/O redirecionado para o console. Por enquanto funciona apenas se você está rodando o Red do CLI, não funciona no console GUI normal do Red.

native! write-clipboard &  read-clipboard

Escreve e lê do clipboard do sistema operacional:

>> write-clipboard "You could paste this somewhere you find useful"
== true

>> print read-clipboard
You could paste this somewhere you find useful