arquivo em lotes é executado manualmente, mas a linha que inicia o exe falha quando o lote é executado no agendador de tarefas

2

Eu tenho um arquivo de lote (abaixo) que funciona perfeitamente quando executado, no entanto, quando eu configurar o arquivo bat no agendador de tarefas não está funcionando direito. O agendador de tarefas, de fato, executa a tarefa com êxito, por isso estou assumindo que tem a ver com permissões para o administrador em relação ao arquivo .exe. Eu já verifiquei se o administrador tinha permissão nas opções de segurança local para "fazer logon como um trabalho em lote" e me certifiquei de que o administrador tenha controle total da pasta inteira em que o .exe está contido. funciona, estou logado como administrador.

EDIT: Resumo das perguntas e respostas nos comentários:

  1. M: \ é uma unidade em rede. Ele está fisicamente localizado neste mesmo servidor, mas, de acordo com os requisitos do programa, a letra da unidade de rede deve ser usada.
  2. moveu o arquivo bat para C: \ na teoria de que tê-lo na área de trabalho pode ser um problema: sem alteração.
  3. Quando o exe é executado, um gui deve ser iniciado. Isso acontece quando o morcego é executado manualmente, mas o gui não é iniciado quando o gerenciador de tarefas é usado. O restante do morcego é executado como pretendido. Por desenvolvedor de software, o gui deve ser capaz de executar até mesmo do gerenciador de tarefas e eles não viram esse comportamento antes.
EDIT 2: Então eu confirmei que o problema é que o GUI precisa ser lançado, ao contrário das expectativas. Eu posso fazer a tarefa funcionar alterando para Run only when user is logged on , o que faz com que a interface do usuário apareça. No entanto, como este é um servidor e a tarefa é executada nas primeiras horas da manhã, geralmente não há um usuário conectado. Existe uma maneira de fazer com que o usuário faça logon e logoff em um horário específico? Ou outra solução diferente de sempre deixar um usuário logado?

O arquivo em lote (REVISED):

netsh interface set interface "Local Area Connection 2" DISABLED
iisreset /stop
timeout /t 120
iisreset /start
netsh interface set interface "Local Area Connection 2" ENABLED
start /d "M:\CBSW" optimize.exe T

O XML exportado da tarefa no agendador de tarefas (revisar:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2012-01-10T09:42:01.9781872</Date>
    <Author>DOMAIN\Administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2012-01-10T02:00:00</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Thursday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>DOMAIN\Administrator</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT15M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>E:\IISRESET+Optimize.bat</Command>
      <WorkingDirectory>E:\Data\Optimize\</WorkingDirectory>
    </Exec>
  </Actions>
</Task>
    
por tlynnec 20.02.2015 / 19:00

1 resposta

0

Um aplicativo somente para GUI precisa de uma área de trabalho e você só obtém um desses quando é um usuário conectado.

Mas você pode encontrar alguns recursos adicionais aqui: link

    
por 26.02.2015 / 21:34