none
Scripts executar programas.

    Question

  • Boa tarde!

    Estou iniciando no mundo dos scripts e preciso criar um script que inicie um programa e de execute uma tarefa nele,

    Exem: tenho um programa que cria um backup altomaticamente so precisa iniciar o programa e apertar o botão start, ha como criar um script assim, apois criar o script preciso colocar ele no agendador de tarefas, há como fazer isso?

    Monday, October 28, 2013 4:01 PM

Answers

  • Guilherme,

    O ideal é quando o programa tenha opções via linha de comando, como é o exemplo do NTBackup (Windows 2003).

    Quando o programa não dá esta opção existe uma "gambiarra" com o sendkeys, no caso você abre o programa pelo script e envia tabs e letras\numeros como se estivesse digitando no teclado.

    Veja um exemplo, eu abro a calculadora e somo 1 + 9.

    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "calc", 9
    
    'dá um tempinho pro programa abrir
    wscript.sleep 2000
    
    'envio o 1
    WshShell.SendKeys "1"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o +
    WshShell.SendKeys "{+}"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o 9
    WshShell.SendKeys "9"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o enter
    WshShell.SendKeys "{ENTER}"

    Pode ser que você precise do TAB pra chegar no botão start. {TAB} 

    Ref.

    NTBackup

    http://ss64.com/nt/ntbackup.html

    WshShell.SendKeys

    http://ss64.com/vb/sendkeys.html


    Fábio de Paula Junior

    Monday, October 28, 2013 10:53 PM
  • Guilherme,

    Ainda ficou faltando aspas.

    A lógica é a seguinte:

    Aspas (") são usada como delimitadores de strings, exempl

    "Fábio de Paula Junior"

    Mas e se minha string tem aspas dentro dela? Se eu fizer assim:

    "Fábio "de Paula Junior"

    Será considerado o fechamento na segunda aspas ("Fabio ") e o restante vai gerar um erro.

    Então eu tenho que colocar uma aspas duplas dentro da aspas assim

    "Fábio ""de Paula Junior"

    Esta última vai gerar essa string: Fábio "de Paula Junior

    No seu caso vc quer adicionar aspas no inicio e no final da string então você tem que:

    1) Iniciar a string

    "

    2)Colocar a aspas (dupla)

    """

    3)O texto

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe

    4)A aspas do final do texto (duplas)

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe""

    5) a aspa que fecha a string

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe"""

    Resultado

    Command="""C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe"""


    Fábio de Paula Junior


    Tuesday, October 29, 2013 5:01 PM

All replies

  • Guilherme,

    O ideal é quando o programa tenha opções via linha de comando, como é o exemplo do NTBackup (Windows 2003).

    Quando o programa não dá esta opção existe uma "gambiarra" com o sendkeys, no caso você abre o programa pelo script e envia tabs e letras\numeros como se estivesse digitando no teclado.

    Veja um exemplo, eu abro a calculadora e somo 1 + 9.

    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "calc", 9
    
    'dá um tempinho pro programa abrir
    wscript.sleep 2000
    
    'envio o 1
    WshShell.SendKeys "1"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o +
    WshShell.SendKeys "{+}"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o 9
    WshShell.SendKeys "9"
    
    'Mais um tempinho só pra vc conseguir ver
    wscript.sleep 1000
    
    'Envio o enter
    WshShell.SendKeys "{ENTER}"

    Pode ser que você precise do TAB pra chegar no botão start. {TAB} 

    Ref.

    NTBackup

    http://ss64.com/nt/ntbackup.html

    WshShell.SendKeys

    http://ss64.com/vb/sendkeys.html


    Fábio de Paula Junior

    Monday, October 28, 2013 10:53 PM
  • Estou rodando o seguinte codigo so que ele esta retornando o erro abaixo, alguma ideia oque esta errado?

    Set WshShell = WScript.CreateObject("WScript.Shell")
    Command="C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
    WshShell.Run Command,9

    error:

    The system cannot find the file specified

    Tuesday, October 29, 2013 11:48 AM
  • Guilherme,

    Você está tentando executar uma pasta (C:\ProgramData\Microsoft\Windows\Start Menu\Programs), você tem que indicar algo que seja executavel (.exe, .bat)


    Fábio de Paula Junior

    Tuesday, October 29, 2013 12:45 PM
  • Fabio eu entendi mas ja descobri o problema, por exempo se eu executo ate C:\ProgramData\Microsoft\Windows ele abre a pasta mas se eu executo C:\ProgramData\Microsoft\Windows\Start Menu\Programs o erro aparece, pelo que percebi ele não esta conseguindo passar pelas pastas que tem espaço em branco como a Start Menu, ele não consegue passar dela, estou correto ou n?
    Tuesday, October 29, 2013 12:51 PM
  • Guilherme,

    Exatamente o que você disse, esquece o que escrevi antes.

    Use aspas no nome da pasta.

    Set WshShell = WScript.CreateObject("WScript.Shell")
    Command="""c:\ProgramData\Microsoft\Windows\Start Menu\Programs"""
    WshShell.Run Command,9


    Fábio de Paula Junior


    Tuesday, October 29, 2013 1:07 PM
  • Fábio,

    desculpa estar te atormentando =D mas o problema  persistiu mesmo utilizando duas aspas duplas,

    =(

    Tuesday, October 29, 2013 1:18 PM
  • Cole seu código aqui.

    Fábio de Paula Junior

    Tuesday, October 29, 2013 3:32 PM
  • esta ai =)Set WshShell = WScript.CreateObject("WScript.Shell")
    Command=""C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe""
    WshShell.Run Command,9
    Tuesday, October 29, 2013 4:29 PM
  • Guilherme,

    Ainda ficou faltando aspas.

    A lógica é a seguinte:

    Aspas (") são usada como delimitadores de strings, exempl

    "Fábio de Paula Junior"

    Mas e se minha string tem aspas dentro dela? Se eu fizer assim:

    "Fábio "de Paula Junior"

    Será considerado o fechamento na segunda aspas ("Fabio ") e o restante vai gerar um erro.

    Então eu tenho que colocar uma aspas duplas dentro da aspas assim

    "Fábio ""de Paula Junior"

    Esta última vai gerar essa string: Fábio "de Paula Junior

    No seu caso vc quer adicionar aspas no inicio e no final da string então você tem que:

    1) Iniciar a string

    "

    2)Colocar a aspas (dupla)

    """

    3)O texto

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe

    4)A aspas do final do texto (duplas)

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe""

    5) a aspa que fecha a string

    """C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe"""

    Resultado

    Command="""C:\ Program Files (x86)\SolarWinds\Orion\SolarwindsDiagnostics.exe"""


    Fábio de Paula Junior


    Tuesday, October 29, 2013 5:01 PM
  • Muito obrigado Fabio resolveu meu problema, depois deixa o numero da sua conta no banco pra depositar um percentual do meu salário!hehehe vlw cara
    Tuesday, October 29, 2013 5:15 PM
  • kkkkkkk

    Fábio de Paula Junior

    Tuesday, October 29, 2013 5:33 PM