Executar arquivo em lote por meio de um serviço

1

Estou tentando agendar um arquivo em lotes para ser executado por meio de um aplicativo de terceiros, no entanto, o arquivo de saída não é criado no diretório. Se eu executar o arquivo .BAT a partir da linha de comando, ele funciona e o arquivo é criado. Também usando o Windows Schedule também terá sucesso.

Basicamente, o software de terceiros agendará o arquivo .BAT e mostrará sucesso na interface do usuário de terceiros. A diferença entre executar o prompt de comando e o software é que o software usará o serviço do Windows para iniciar o lote.

O software de terceiros mostrará sucesso, já que foi capaz de chamar com sucesso o arquivo .BAT para ser executado, no entanto, ele não tem controle sobre os outros EXEs que estão sendo chamados dentro do script.

Consigo executar um arquivo .BAT simples no software de terceiros, por exemplo, um comando de cópia.

O .BAT Estou tendo problemas com chamadas de um EXE compilado que lança o Excel para criar um arquivo em um local.

O arquivo .bat chama algo.exe, que chama o Excel.exe:

C: \ algo.exe -o D: \ nome do arquivo.xlsm C: \ nome do arquivo.xlsm refresh_pivot

Você acha que é um problema de permissão? Eu usei o Process Monitor para verificar qualquer erro do Access Denied, mas tudo parece estar funcionando de acordo com o rastreamento. Funcionou em um sistema operacional não-64-bit, atualmente estou usando o Win2008 de 64 bits.

    
por wallz 09.12.2010 / 01:49

2 respostas

0

Quais são as credenciais do usuário em execução na tarefa agendada? O Excel foi executado e configurado sob essa conta de usuário? Meu instinto diz que é onde as coisas estão caindo - o Office não passou pela primeira execução na conta que está executando o arquivo em lote.

    
por 09.12.2010 / 16:15
0

Afrazier provavelmente está no caminho certo. Você pode testar isso usando o comando runas no prompt de comando e testar a execução do arquivo em lotes com a mesma conta que o serviço usa. Este seria um teste muito melhor do que simplesmente executar o arquivo em lotes a partir do prompt de comando em sua conta de usuário ou administrador.

O comando seria algo como isto: C: \ > runas / user: DOMAIN \ service_acct "scheduled.bat"

Eu também tentaria substituir o comando something.exe real para o arquivo em lote e ver se há alguma saída diferente, por exemplo, C: \ > runas / user: DOMÍNIO \ service_acct "algo.exe -o D: \ nome_do_arquivo.xlsm C: \ nome_do_arquivo.xlsm refresh_pivot"

Isso pode lhe dar uma melhor compreensão do que está acontecendo. Se um erro de acesso negado acontecer, então é definitivamente uma permissão. Você pode tentar apenas digitar runas no prompt para ver outras opções também.

    
por 09.12.2010 / 17:22