View Full Version : Ajuda num script .bat


Sandro
10-03-2006, 08:48 PM
Olá, gostaria de uma ajuda para otimizar uma rotina de cópia de arquivos que
tenho.
Atualmente meu bat faz o seguinte:

-------------------------------------------------
@echo off
md %1
cd %1
net use s: \\Apollo\Empresa
echo.
echo Copiando o Backup dos dados...
copy s:\Backup\Server\EOD-Dados.bkf
.... outras cópias mais...
cd ..
net use s: /d
echo.
echo Operação concluída!
-------------------------------------------------

o que eu quero é passar como parâmetro a data do sistema.
Manualmente eu chamo este bat desta forma: copiar 021006
Então ele cria a pasta 021006 e copia tudo dentro dela.
Mas eu queria colocar ele nas tarefas agendadas, só que como eu vou passar a
data do sistema?

Jorge Moura
10-10-2006, 11:26 AM
A variável de sistema que armazena a data é %DATE%.

Enquanto analisava o teu bat lembrei-me de outras situações em que terás de
ter alguma atenção:
- Espaço livre em disco. Convem fazer uma verificação ao espaço livre em
disco para teres a certeza que as cópias correm bem
- O teu bat não tem nenhum controlo de ERRORLEVEL, ou seja, se o bat falhar
não tens maneira de automatizar medidas correctivas ou alternativas
- Com a varíavel de sistema %DATE% poderás ter problemas com os separadores
"-"
- Uma vez mais o teu bat não faz nenhuma verificação relativa à existência
prévia da pasta, ou seja, o bat poderá escrever mais do que uma vez para
dentro da mesma pasta, basta que para isso a data esteja errada
- O Task Scheduler não informa automáticamente sempre que não consegue por
alguma razão executar o bat
- Se ocorrer algum erro durante a execução do bat, mas o bat conseguir ser
executado até ao fim, o Task Scheduler nunca te vai informar disso


Pergunta:
Porque é que queres criar pastas cujo nome é a data? Já repararaste que
todas as pastas que crias têm automaticamente a data de criação associada?



---
Jorge Moura

"Sandro" <msgday@sk.nascimento.nom.br> wrote in message
news:OiNEfXy5GHA.1196@TK2MSFTNGP02.phx.gbl...
> Olá, gostaria de uma ajuda para otimizar uma rotina de cópia de arquivos
> que tenho.
> Atualmente meu bat faz o seguinte:
>
> -------------------------------------------------
> @echo off
> md %1
> cd %1
> net use s: \\Apollo\Empresa
> echo.
> echo Copiando o Backup dos dados...
> copy s:\Backup\Server\EOD-Dados.bkf
> ... outras cópias mais...
> cd ..
> net use s: /d
> echo.
> echo Operação concluída!
> -------------------------------------------------
>
> o que eu quero é passar como parâmetro a data do sistema.
> Manualmente eu chamo este bat desta forma: copiar 021006
> Então ele cria a pasta 021006 e copia tudo dentro dela.
> Mas eu queria colocar ele nas tarefas agendadas, só que como eu vou passar
> a data do sistema?
>
>
>
>

NeTeX
11-04-2006, 06:21 AM
Acho que esse resolve o seu caso. Só não consigo fazer o ano ficar com dois
algarismo, mais vou dá uma investigada e assim que conseguir eu posto!
Por enquanto vai quebrando o galho com esse!
++++++++++++++++++++++++++++++++++++++++
@echo off
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%j%%k%%l
set dtt=%dt%
if exist %dtt% (
goto exist
) else (
goto not
)
:not
md %dtt%
:exist
cd %dtt%
net use s: \\Apollo\Empresa
echo.
echo Copiando o Backup dos dados...
copy s:\Backup\Server\EOD-Dados.bkf
.... outras cópias mais...
cd ..
net use s: /d
echo.
echo Operação concluída!

++++++++++++++++++++++++++++++++++++++++

"Sandro" <msgday@sk.nascimento.nom.br> escreveu na mensagem
news:OiNEfXy5GHA.1196@TK2MSFTNGP02.phx.gbl...
> Olá, gostaria de uma ajuda para otimizar uma rotina de cópia de arquivos
> que tenho.
> Atualmente meu bat faz o seguinte:
>
> -------------------------------------------------
> @echo off
> md %1
> cd %1
> net use s: \\Apollo\Empresa
> echo.
> echo Copiando o Backup dos dados...
> copy s:\Backup\Server\EOD-Dados.bkf
> ... outras cópias mais...
> cd ..
> net use s: /d
> echo.
> echo Operação concluída!
> -------------------------------------------------
>
> o que eu quero é passar como parâmetro a data do sistema.
> Manualmente eu chamo este bat desta forma: copiar 021006
> Então ele cria a pasta 021006 e copia tudo dentro dela.
> Mas eu queria colocar ele nas tarefas agendadas, só que como eu vou passar
> a data do sistema?
>
>
>
>