Ir ao conteúdo
  • Cadastre-se

Bat Criar um script bat ou vbs para executar todo dia 30.


Posts recomendados

Boa tarde !

 

Gostaria de saber se existe uma maneira de criar um script bat ou vbs para executar todo dia 30 a partir das estações.

Tenho um servidor windows 2008 que a gpo não cria task scheduler nas estações que possuem sistema operacional windows 10  e 8.1 

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

Tem sim amigo. Se os computadores são ligados todos os dias pode colocar o bat na pasta de inicialização automática verificar se é o dia 30 se for dia 30 executa seu código senão simplesmente fecha.

 

Lembrando que tem mês que não tem 30 dias ai no caso o script não seria executado nesse mês ou então se o computador não for ligado nesse dia 30 ai tembém não seria executado.

Link para o comentário
Compartilhar em outros sites

Em 11/01/2019 às 22:29, ricardo_br disse:

Tem sim amigo. Se os computadores são ligados todos os dias pode colocar o bat na pasta de inicialização automática verificar se é o dia 30 se for dia 30 executa seu código senão simplesmente fecha.

 

Lembrando que tem mês que não tem 30 dias ai no caso o script não seria executado nesse mês ou então se o computador não for ligado nesse dia 30 ai tembém não seria executado.

ricardo_br, bom dia !

Fiquei na dúvida, como ele vai verificar o dia ?...via script mesmo ?...

adicionado 29 minutos depois

@ricardo_br

ricardo_br, bom dia !

Fiquei na dúvida, como ele vai verificar o dia ?...via script mesmo ?...

Link para o comentário
Compartilhar em outros sites

Não entendo de GPO mas olhando na internet parece existir solução para esse problema.

 

De qualquer maneira um script batch simples pra checar se é dia 30 seria algo assim:

@ECHO OFF
FOR /F "usebackq delims=/" %%A IN (`date /T`) DO (
    if %%A == 30 ECHO Hoje eh dia 30!
)

 

Mas como mencionado acima isso não funcionaria em fevereiro que não tem dia 30, então teria que fazer um caso específico para fevereiro, ou escolher outra data.

 

Também tem que verificar os casos em que dia 30 cai no fim de semana pois isso também depende do computador estar ligado na data.

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, isrnick disse:

Não entendo de GPO mas olhando na internet parece existir solução para esse problema.

 

De qualquer maneira um script batch simples pra checar se é dia 30 seria algo assim:


@ECHO OFF
FOR /F "usebackq delims=/" %%A IN (`date /T`) DO (
    if %%A == 30 ECHO Hoje eh dia 30!
)

 

Mas como mencionado acima isso não funcionaria em fevereiro que não tem dia 30, então teria que fazer um caso específico para fevereiro, ou escolher outra data.

 

Também tem que verificar os casos em que dia 30 cai no fim de semana pois isso também depende do computador estar ligado na data.

Certo, mas neste script ele consegue chamar um script(bat)?...exemplo: se for dia 30 então execute o backup.bat, quanto ao mês de fevereiro sem problemas estou ciente disso bem como se as estações não estiverem ligadas.

Link para o comentário
Compartilhar em outros sites

Boa tarde !

Fiz o teste mas não funcionou executando do outro bat, já verifiquei o nome do outro bat mas ele não executa.

Ambos estão assim e estão na pasta NETLOGON:

===============================================================================

backup_email.bat

-------------------------------------------------------------------------------------------------------------------------------------------

@echo                                                       VERIFICA SE E O DIA 15
@echo                                                     

@echo off
FOR /F "usebackq delims=/" %%A IN ('date /T') DO (IF %%A == 15 backup_email_local.bat)

===============================================================================

 

deveria executar o bat abaixo:

===============================================================================

backup_email_local.bat

------------------------------------------------------------------------------------------------------------------------------------------

@echo off /hid

mode 150,40
title INICIANDO BACKUP EMAIL
@echo                                                       COPIA ARQUIVOS DO OUTLOOK
@echo                                                     FINALIZAR PROCESSO OUTLOOK.EXE

taskkill /im outlook.exe /f
xcopy "%USERPROFILE%\Documents\Arquivos do Outlook\*.pst" "%USERPROFILE%\BKP_EMAIL\BACKUPEMAIL_%COMPUTERNAME%_%USERNAME%\" /y

===============================================================================

 


 

 

Link para o comentário
Compartilhar em outros sites

Você quer que se for dia 30 faça isso abaixo?

 

taskkill /im outlook.exe /f
xcopy "%USERPROFILE%\Documents\Arquivos do Outlook\*.pst" "%USERPROFILE%\BKP_EMAIL\BACKUPEMAIL_%COMPUTERNAME%_%USERNAME%\" /y
start outlook.exe

 

 

e ao final execute esse outro bat: \backup_email_server.bat :

Link para o comentário
Compartilhar em outros sites

Nos arquivos que você postou não está chamando o outro bat apenas imprime.

 

Mas descobri onde está o problema... Eu usei o parâmetro usebackq no comando FOR, isso implica que o comando que gera o texto a ser analisado, nesse caso date /T, será englobado entre crases ` ` ao invés de aspas simples ' ', isso serve para não haver confusão em casos que o próprio comando contém o caractere de aspas simples ' , mas no seu comando tem usebackq e está usando aspas simples ao invés de crases o que gera o problema.

 

Então você deve remover o parâmetro usebackq ou então usar crases no comando:

FOR /F "delims=/" %%A IN ('date /T') DO (IF %%A == 15 backup_email_local.bat)

ou

FOR /F "usebackq delims=/" %%A IN (`date /T`) DO (IF %%A == 15 backup_email_local.bat)

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Fiz esse pequeno script usando a variável %date% + comando IF:

 

@Echo off

Echo Verificando se hoje e dia 30

If "%date:~0,2%"=="30" (
Echo Hoje e dia %date:~0,2% o backup sera executado
@timeout /t 10 > Nul
taskkill /im outlook.exe /f
xcopy "%USERPROFILE%\Documents\Arquivos do Outlook\*.pst" "%USERPROFILE%\BKP_EMAIL\BACKUPEMAIL_%COMPUTERNAME%_%USERNAME%\" /y
start outlook.exe
call \\Srvad\netlogon\backup_email_server.bat
) Else (
Echo Hoje nao e dia 30 hoje e dia %date:~0,2%
)
pause

 

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@ricardo_br

14 horas atrás, ricardo_br disse:

Fiz esse pequeno script usando a variável %date% + comando IF:

 


@Echo off

Echo Verificando se hoje e dia 30

If "%date:~0,2%"=="30" (
Echo Hoje e dia %date:~0,2% o backup sera executado
@timeout /t 10 > Nul
taskkill /im outlook.exe /f
xcopy "%USERPROFILE%\Documents\Arquivos do Outlook\*.pst" "%USERPROFILE%\BKP_EMAIL\BACKUPEMAIL_%COMPUTERNAME%_%USERNAME%\" /y
start outlook.exe
call \\Srvad\netlogon\backup_email_server.bat
) Else (
Echo Hoje nao e dia 30 hoje e dia %date:~0,2%
)
pause

 

Sensacional ricardo_br!.... funcionou perfeitamente, muito obrigado. Agradeço também ao isrnick. 👏

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...