1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB2008 executar comando DOS

Discussão em 'Programação' iniciada por tds, 22 de Abril de 2009. (Respostas: 9; Visualizações: 1471)

  1. tds

    tds Power Member

    Boas!

    Estou agora a mandar executar um comando no DOS no VB2008 e não estou a perceber o porquê de ele não ler as strings que lhe dou como keysend...

    Aqui vai o código:

    Código:
    Dim optim As Object = New ProcessStartInfo
                    optim.FileName = "cmd.exe"
                    System.Diagnostics.Process.Start(optim)
                    SendKeys.Send("cd optimizacoes" & "{enter}" & "optim " & frmMain.lstProdutos.CheckedItems(i).ToString & ".dad " & frmMain.lstProdutos.CheckedItems(i).ToString & ".out" & "{enter}")
    O que aparece de mensagem no DOS é:
    Código:
    C:\Documents and Settings\Administrator\My Documents\Interface para formulaçao d
    e produtos (VB2008)\Fase_2\DG_Produtos_09062008_ultimaversao\DG_Produtos\bin\D
    ebug>PRODUTO10.dad PRODUTO10.out
    'PRODUTO10.dad' is not recognized as an internal or external command,
    operable program or batch file.
    Não sei se ele não lê a string "cd optimizacoes" ou se não a reconhece...
    Se houver outra maneira de fazer isto, por favor digam!!

    "Isto" é executar um batch que tem de receber dois parametros :(

    Ajuda?

    Cumpz
    Tiago dos Santos
     
  2. ribeiro55

    ribeiro55 Power Member

    Assim de repente, tenta separar os envios de teclas.
    Não envies tudo na mesma chamada.
     
  3. iznougud

    iznougud I quit My Job for Folding

    tenta algo do genero:

    Código:
      optim.FileName = "c:\path_do_bat\programa.bat arg1 arg2"
     
  4. jpaulino

    jpaulino Power Member

    Está a confundir algumas coisas ... primeiro defines a variável como Object e depois dizer que é do tipo ProcessStartInfo.

    Faz lá como deve ser e depois utilizas a propriedade Arguments para definires os teus argumentos:

    Código:
     
    Dim optim As New ProcessStartInfo
    optim.FileName = "cmd.exe"
    optim.Arguments = " bla bla bla"
    System.Diagnostics.Process.Start(optim)
    
     
  5. tds

    tds Power Member

    Continua a não dar =z

    Nos Argumentos coloquei
    Código:
    optim.Arguments = "cd optimizacoes {enter} optim " & frmMain.lstProdutos.CheckedItems(i).ToString & ".dad" & frmMain.lstProdutos.CheckedItems(i).ToString & ".out"
    mas já antes tinha posto apenas um
    Código:
    cd optimizacoes
    e deu em nada também =Z
     
  6. tds

    tds Power Member

    Bem... resolvi a questão pondo 2 espaços antes de começar o código na string D:

    Não vejo o nexo disto... alguma ajuda? D:
     
  7. tds

    tds Power Member

    ... afinal não resolveu D: Voltei a compilar aquilio e agora não dá D:
     
  8. iznougud

    iznougud I quit My Job for Folding

    Ja tentaste a minha solução?

    So precisas de executar o ficheiro bat em vez de arrancares o CMD.exe. Nao passas os argumentos mas executas logo a string toda. Tens é de passar o Caminho completo para o ficheiro Bat (e garantir que o ficheiro Bat tem terminação .bat) para o sistema o reconhecer.
     
  9. tds

    tds Power Member

    Exprimentei agora... deu-me erro a dizer que não encontrava o ficheiro =z
     
  10. iznougud

    iznougud I quit My Job for Folding

    tens de passar o Path completo.

    Código:
    Dim path As String = System.IO.Directory.GetCurrentDirectory() & "\optimizacoes\optim.bat"
    path &= " argumento1 argumento2"
    
    Dim optim As New ProcessStartInfo
    optim.FileName = path
    System.Diagnostics.Process.Start(optim)
    
    
     

Partilhar esta Página