arquivo bat se comporta de maneira diferente quando executado a partir do Windows Scheduler

2

Eu tenho um arquivo .bat S: \ BACKUP_db \ copytofileserver.bat, que pega alguns arquivos e os compacta na unidade de rede. Seu primeiro comando é excluir o backup antigo em um caminho de rede específico e, em seguida, compactar os arquivos na pasta S: \ BACKUP_db. Veja:

echo ================================================== >> log.txt
echo %date%, %time%: Backup started >> log.txt
set dow=%date:~0,3% >> log.txt

echo %time%: deleting existing backup... >> log.txt
del /F /S /Q /A "\192.168.1.249\homes\backup\%dow%.7z"  >> log.txt
echo %time%: OK >> log.txt

echo %time%: packing and saving new backup... >> log.txt
if exist *.Backup S:\BACKUP_dbza a -t7z -mx=1 "\192.168.1.249\homes\backup\%dow%.7z" S:\Backup_db\*.Backup -m0=BCJ2 -m1=LZMA:d23 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 >> log.txt
echo %time%: OK >> log.txt

echo %time%: deleting local backup files...  >> log.txt
del /F /S /Q /A S:\backup_db\*.Backup  >> log.txt
echo %time%: OK  >> log.txt

echo %date%, %time%: Backup finished >> log.txt

quando executo esse arquivo .bat manualmente, ele funciona como um encanto (o arquivo é muito grande, cca 50 GB, quando compactado ele tem cca 5 GB), no entanto, quando eu executo esse arquivo .bat no trabalho do Windows Scheduler, inicia ok, apaga os arquivos na localização da rede, mas depois fica sempre preso durante a execução do programa 7zip. O agendador do Windows informa o resultado da última execução = 0x41306.

As configurações da tarefa do agendador de janelas parecem corretas: executar somente quando o usuário estiver conectado, "executar com privilégios mais altos" não faz diferença, etc.

Estranho é, funcionou antes, agora está ficando preso e não tenho idéia do porquê. Às vezes, um arquivo de 16MB é criado no destino da rede, às vezes 2GB, parece aleatório.

segunda rodada: bem, isso é o que aconteceu agora - eu defini o arquivo bat para rodar no tempo especificado e observei a janela preta com meus comandos sendo executados. Ele caiu novamente, o arquivo foi criado: "\ 192.168.1.249 \ homes \ qi \ BackupQIostra \ po .7z", ele tem 0,6 GB, é suposto ter pelo menos 5 GB. Também no arquivo bat eu substituí todos os caminhos locais com "% ~ dp0" como sugerido, sem alteração. Saída do arquivo de log:

================================================== 
po 04. 08. 2014, 11:00:00,40: Backup started 
11:00:00,44: deleting existing backup... 
Deleted file - \192.168.1.249\homes\backup\po  .7z
11:00:00,49: OK 
11:00:00,50: packing and saving new backup... 

depois disso, eu corro o arquivo .bat clicando duas vezes e observei o que acontece, o zíper vai bem, o arquivo de 5 GB é criado, a saída do log é concluída:

================================================== 
po 04. 08. 2014, 11:37:37,60: Backup started 
11:37:37,61: deleting existing backup... 
Deleted file - \192.168.1.249\homes\backup\po  .7z
11:37:37,63: OK 
11:37:37,63: packing and saving new backup... 

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive \192.168.1.249\homes\backup\po  .7z

Compressing  20225_20140804030000 - Copy.Backup
Compressing  20225_20140804030000.Backup

Everything is Ok
12:53:59,52: OK 
12:53:59,52: deleting local backup files...  
Deleted file - S:\BACKUP_db225_20140804030000 - Copy.Backup
Deleted file - S:\BACKUP_db225_20140804030000.Backup
12:54:02,18: OK  
po 04. 08. 2014, 12:54:02,18: Backup finished 
    
por skroslak 02.08.2014 / 09:13

3 respostas

1

parece que delegar a tarefa ao utilitário hstart solucionou o problema. É uma espécie de solução e perco a capacidade de obter qualquer feedback de 7zip, mas o arquivo bat agora funciona bem e conclui a tarefa.

então substituí isso:     se existir * .Backup% ~ dp0 \ 7aa -t7z -mx = 1 "\ 192.168.1.249 \ homes \ qi \ BackupQIosar \% dow% .7z"% ~ dp0 * .Backup -m0 = BCJ2 -m1 = LZMA: d23 -m2 = LZMA: d19-m3 = LZMA: d19 -mb0: 1-mb0s1: 2-mb0s2: 3 > > log.txt

com isso:     se existir .Backup "% ~ dp0hstart \ hstart.exe" / NOCONSOLE / RUNAS / NOUAC / SHELL / ESPERA / D="% ~ dp0" / BELOWNORMAL "% ~ dp07za a -t7z -mx = 1" \ 192.168 .1.249 \ homes \ qi \ BackupQIostra \% dow% .7z "% ~ dp0 .Backup -m0 = BCJ2 -m1 = LZMA: d23 -m2 = LZMA: d19 -m3 = LZMA: d19 -mmb0: 1 -mb0s1: 2 -mb0s2: 3 "> > log.txt

MAS:

agora, quando eu observei ele sendo executado pelo agendador, notei uma coisa estranha. Meu arquivo .bat é iniciado, o hstart executa o comando 7zip externaly e a principal janela de comando preta que aguarda a conclusão da tarefa hstart / 7zip desaparece após ~ 5mins! Mas o comando externo 7zip ainda está em execução, oculto e concluído corretamente. Claro, o arquivo de log não está completo, ainda empilhar no meio, desde que a janela principal caiu. Então, agora eu sei com certeza, que é a principal janela de comando que está falhando.

    
por 06.08.2014 / 14:41
0

Eu acho que o diretório atual% systemroot% \ System32 quando iniciar com o serviço ou sheduler. Provavelmente precisa adicionar:

CD S:\BACKUP_db\

    
por 02.08.2014 / 13:09
0

Eu também tenho o arquivo .bat executado no sheduler. Meu problema era: na aba "Configurações", ele "interrompe a tarefa se ela for mais longa do que:" e eu mudei isso. Mas dentro de gatilho tem a mesma coisa. Isso o que parou meu aplicativo de console em 30 minutos (definido por padrão lá). Então funcionou manualmente, mas teve 0x41306 erro executado pelo shedule. Cheguei aqui em busca de solução, espero que ajude alguém.

    
por 19.02.2015 / 10:52