none
Arquivo criado a partir de uma BAT com DiaMesAno RRS feed

  • Pergunta

  • Senhores, tenho um bat para ser iniciado atraves do agendador de tarefas onde apos termino moverei o Backup para uma outra pasta. Gostaria de mudar o nome do arquivo adicionando o DiaMesAno. Hoje no meu servidor tras o dia da semana com isso a BAT acusa problema por causa do espaco. Estou usandoo camando date, consigo extrair somente o que quero? Segue abaixo linha de comando:

    MOVE E:\Publico\Backup\Fedmetal\Fedmetal.bak C:\ScriptBackup\Bkp\NomedoArquivo_%DATE%.bak

    Contando com o auxilio de sempre

     

    terça-feira, 24 de janeiro de 2012 18:56

Respostas

  • Marcelinho,

        O seu problema não está no espaço, mas na barra / que o Windows utiliza como divisor dos campos dia, mes e ano.

        Seguem duas sugestões de como resolver o problema, a primeira através do uso do MAintenance Plan e a segunda gerando a data em um formato aceitável pelo Windows para mover o seu arquivo. É altamente recomendado que vocë utilize a primeira opção.

        SEgue um passo a passo de como fazer pelo Maintenance Plan

        - Abra o SSMS

        - Conecte no servidor desejado\

        - Abra a aba Management

        - Botão direito sobre Maintenance Plan

        - Escolha a opção MAintenance Plan Wizard

        - na Janela SQL Server Maintenance Plan Wizard, clique em Next

        - NA janela Select Plan Properties, informe um nome para o Plano de Manutenção

        - Escolha um horário de execução clicando no botão Change

        - Na janela Select Maintenance Tasks, escolha a opção Back Up Database (Full)

        - NA janela Select MAintenance Task Order, clique em Next

        - Na janela Define Back Up Database (Full) Task, clique em Database(s) e escolha a base de dados desejada (FedMetal provavelmente)

        - Clique na opção Create a backup file for every database

        - Clique na opção Create a sub-directory for each database   

        - informe o diretório C:\ScriptBackup\Bkp na opção Folder:

        - Clique em Next

        - Na janela Select Report Options, marque a opção Write a report to a text file caso deseje que um relatório seja criado a cada backup

        - Clique em Next

        - Clique em Finish na janela Complete the Wizard.

        Pronto! Só aguardar o backup rodar e você terá os seus backups no formato FedMetal_yyyy_mm_dd_hhmmss_xxxxxxx.bak no diretorio desejado.

     

        Segue a sugestão utilizando um arquivo bat para gerar a data no formato aceitável.

       Se o delimitador de dia, mês e ano for diferente da barra, troque no código o valor do campo delims=/ para um outro delimitador.

        Você precisará ter direito de leitura e escrita no diretório c:\temp

    @echo off
    setlocal enabledelayedexpansion

    :: Obtem data
    date /t> c:\Temp\data.txt

    FOR /F "delims=/ tokens=1-2*" %%a in (c:\temp\data.txt) do (
      set dia=%%a
      set mes=%%b
      set ano=%%c
    )
    set vdate=%ano%%mes%%dia%
    set vdate=%vdate: =%

    MOVE E:\Publico\Backup\Fedmetal\Fedmetal.bak C:\ScriptBackup\Bkp\NomedoArquivo_%vdate%.bak

    Espero ter ajudado.

     


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
    • Sugerido como Resposta Marcelinho FaberCode quinta-feira, 26 de janeiro de 2012 01:06
    • Marcado como Resposta Harley Araujo quinta-feira, 26 de janeiro de 2012 13:55
    quarta-feira, 25 de janeiro de 2012 04:08
    Moderador

Todas as Respostas

  • Marcelinho, boa tarde,

    Para mover o arquivo para outra pasta e renomea-lo vc pode utilizar o intergration services do SQL, em especial a task chamada File System Task.

    Vc precisará utilizar variáveis globais para pegar o nome do arquivo atual e renomea-lo para o nome + data, mas é bem simples de utilizar. Dê uma pesquisada na internet, pois existem vários exemplos sobre como funciona o file System Task.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    terça-feira, 24 de janeiro de 2012 19:19
  • Marcelinho,

        O seu problema não está no espaço, mas na barra / que o Windows utiliza como divisor dos campos dia, mes e ano.

        Seguem duas sugestões de como resolver o problema, a primeira através do uso do MAintenance Plan e a segunda gerando a data em um formato aceitável pelo Windows para mover o seu arquivo. É altamente recomendado que vocë utilize a primeira opção.

        SEgue um passo a passo de como fazer pelo Maintenance Plan

        - Abra o SSMS

        - Conecte no servidor desejado\

        - Abra a aba Management

        - Botão direito sobre Maintenance Plan

        - Escolha a opção MAintenance Plan Wizard

        - na Janela SQL Server Maintenance Plan Wizard, clique em Next

        - NA janela Select Plan Properties, informe um nome para o Plano de Manutenção

        - Escolha um horário de execução clicando no botão Change

        - Na janela Select Maintenance Tasks, escolha a opção Back Up Database (Full)

        - NA janela Select MAintenance Task Order, clique em Next

        - Na janela Define Back Up Database (Full) Task, clique em Database(s) e escolha a base de dados desejada (FedMetal provavelmente)

        - Clique na opção Create a backup file for every database

        - Clique na opção Create a sub-directory for each database   

        - informe o diretório C:\ScriptBackup\Bkp na opção Folder:

        - Clique em Next

        - Na janela Select Report Options, marque a opção Write a report to a text file caso deseje que um relatório seja criado a cada backup

        - Clique em Next

        - Clique em Finish na janela Complete the Wizard.

        Pronto! Só aguardar o backup rodar e você terá os seus backups no formato FedMetal_yyyy_mm_dd_hhmmss_xxxxxxx.bak no diretorio desejado.

     

        Segue a sugestão utilizando um arquivo bat para gerar a data no formato aceitável.

       Se o delimitador de dia, mês e ano for diferente da barra, troque no código o valor do campo delims=/ para um outro delimitador.

        Você precisará ter direito de leitura e escrita no diretório c:\temp

    @echo off
    setlocal enabledelayedexpansion

    :: Obtem data
    date /t> c:\Temp\data.txt

    FOR /F "delims=/ tokens=1-2*" %%a in (c:\temp\data.txt) do (
      set dia=%%a
      set mes=%%b
      set ano=%%c
    )
    set vdate=%ano%%mes%%dia%
    set vdate=%vdate: =%

    MOVE E:\Publico\Backup\Fedmetal\Fedmetal.bak C:\ScriptBackup\Bkp\NomedoArquivo_%vdate%.bak

    Espero ter ajudado.

     


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
    • Sugerido como Resposta Marcelinho FaberCode quinta-feira, 26 de janeiro de 2012 01:06
    • Marcado como Resposta Harley Araujo quinta-feira, 26 de janeiro de 2012 13:55
    quarta-feira, 25 de janeiro de 2012 04:08
    Moderador
  • Com certeza ajudou, obrigado pela atenção.
    Marcelo Nogueira
    quinta-feira, 26 de janeiro de 2012 01:06