Ir ao conteúdo

Posts recomendados

Postado

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.

Postado

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.

Postado
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 ?...

Postado

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.

Postado
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.

Postado

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

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

 


 

 

Postado

Os 2 bats estão na mesma pasta?

 

Tente usando CALL ou START:

 

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

Postado

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 :

Postado

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
Postado

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
Postado

@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

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!