Executar arquivo bat que está dentro de uma pasta.
Olá, estou com dificuldade em executar um arquivo bat que está dentro de uma pasta através de uma aplicação feita em Delphi.
Estou usando o seguinte comando para executar a bat.
Ao executar o comando, ele não encontra o arquivo bat que está dentro da pasta script.
Ao executar o comando sem o "/C" percebi que ele pega somente o caminho atual da aplicação delphi.
Por exemplo: Minha aplicação Delphi está em :
E é exatamente isso que o prompt mostra ao executar o comando sem o "/C".
Não está acessando o caminho que eu indiquei no comando. O que poderia ser ?
Obrigado
Estou usando o seguinte comando para executar a bat.
ShellExecute(Application.Handle, 'open', 'cmd.exe',
PChar('/c ' + ObterDiretorioDoExecutavel +
'scripts\\atualizacao_bd_4.bat'), nil, SW_SHOWNORMAL);Ao executar o comando, ele não encontra o arquivo bat que está dentro da pasta script.
Ao executar o comando sem o "/C" percebi que ele pega somente o caminho atual da aplicação delphi.
Por exemplo: Minha aplicação Delphi está em :
C:\\Users\\Cacau\\Documents\\Embarcadero\\Studio\\Projects\\atualizacaoTED\\Win32\\Debug
E é exatamente isso que o prompt mostra ao executar o comando sem o "/C".
Não está acessando o caminho que eu indiquei no comando. O que poderia ser ?
Obrigado
Cayque
Curtidas 0
Melhor post
Raimundo Pereira
10/01/2018
Bom dia!
Fiz um exemplo: Testado e Funcionando.
Var Nome_Bat:string;
Var Janela_Execution:integer;
begin
Nome_Bat:='MYCOMANDO.BAT';
Janela_Execution:=1; // 0 Executará a BAT em modo Oculto
// 1 Executará a BAT em modo Vizual
Bat:=ExtractFilePath(Application.ExeName)+Nome_Bat;
if FileExists(bat) then
ShellExecute(0, nil, 'cmd.exe', PWideChar('/c ' + '"'+bat+'"'), nil, Janela_Execution);
Comando dentro da BAT: date /t>>"C:\\Aplic\\Hora.txt"
Ao executar o código ele deverá gerar um TXT com a hora atual.
Sucesso!
Fiz um exemplo: Testado e Funcionando.
Var Bat:string;
Var Nome_Bat:string;
Var Janela_Execution:integer;
begin
Nome_Bat:='MYCOMANDO.BAT';
Janela_Execution:=1; // 0 Executará a BAT em modo Oculto
// 1 Executará a BAT em modo Vizual
Bat:=ExtractFilePath(Application.ExeName)+Nome_Bat;
if FileExists(bat) then
ShellExecute(0, nil, 'cmd.exe', PWideChar('/c ' + '"'+bat+'"'), nil, Janela_Execution);
Comando dentro da BAT: date /t>>"C:\\Aplic\\Hora.txt"
Ao executar o código ele deverá gerar um TXT com a hora atual.
Sucesso!
GOSTEI 1
Mais Respostas
Raimundo Pereira
09/01/2018
Detalhe como você está passando um caminho no Shell sempre use '"'+caminho da bat+'"';
Caso não coloque '"' antes e no final e o caminho possuir espaços ele vai lhe mostrar
C:\\\\Users\\\\Cacau\\\\Documents\\\\Embarcadero\\\\Studio\\\\Projects\\\\atualizacaoTED\\\\Win32\\\\Debug
Ao invés de executar sua bat
Caso não coloque '"' antes e no final e o caminho possuir espaços ele vai lhe mostrar
C:\\\\Users\\\\Cacau\\\\Documents\\\\Embarcadero\\\\Studio\\\\Projects\\\\atualizacaoTED\\\\Win32\\\\Debug
Ao invés de executar sua bat
GOSTEI 0
Cayque
09/01/2018
Bom dia!
Fiz um exemplo: Testado e Funcionando.
Var Nome_Bat:string;
Var Janela_Execution:integer;
begin
Nome_Bat:='MYCOMANDO.BAT';
Janela_Execution:=1; // 0 Executará a BAT em modo Oculto
// 1 Executará a BAT em modo Vizual
Bat:=ExtractFilePath(Application.ExeName)+Nome_Bat;
if FileExists(bat) then
ShellExecute(0, nil, 'cmd.exe', PWideChar('/c ' + '"'+bat+'"'), nil, Janela_Execution);
Comando dentro da BAT: date /t>>"C:\\\\Aplic\\\\Hora.txt"
Ao executar o código ele deverá gerar um TXT com a hora atual.
Sucesso!
Fiz um exemplo: Testado e Funcionando.
Var Bat:string;
Var Nome_Bat:string;
Var Janela_Execution:integer;
begin
Nome_Bat:='MYCOMANDO.BAT';
Janela_Execution:=1; // 0 Executará a BAT em modo Oculto
// 1 Executará a BAT em modo Vizual
Bat:=ExtractFilePath(Application.ExeName)+Nome_Bat;
if FileExists(bat) then
ShellExecute(0, nil, 'cmd.exe', PWideChar('/c ' + '"'+bat+'"'), nil, Janela_Execution);
Comando dentro da BAT: date /t>>"C:\\\\Aplic\\\\Hora.txt"
Ao executar o código ele deverá gerar um TXT com a hora atual.
Sucesso!
P2, se você colocar seu script dentro de uma pasta e tentar acessar, ele executa normalmente?
GOSTEI 0
Cayque
09/01/2018
P2, consegui resolver aqui. Eu estava errando o caminho dos arquivos no bat. Quando ele é executado pelo Delphi, o caminho que aponta para os arquivos alteram dentro do bat.
Valeu !!!
Valeu !!!
GOSTEI 0