Semana passada precisei dar uma volta ao "Túnel do tempo", depois de jogar Quake, Duke Nukem 3d, e alguns outros clássicos de 32 e 16 bits, nunca pensei que voltaria ao velho DOS, mas enfim, eu estava errado, e nestes três típicos colocarei algumas dicas que você pode precisar um dia =)
Me deparei com a seguinte situação, utilizando a ferramenta nativa de Backup do windows server 2003, ntbackup, diariamente criamos os backup's dos servidores, bastando apenas que uma pessoa no período noturno renomeie os mesmos com a data que ele foi feito, o problema é que aos finais de semana ninguém está disponível para executar esta tarefa, e também, caso o funcionário do período noturno falte, o backup simplesmente substitui o arquivo, para resolver isso dei uma pesquisada e descobri como renomear automaticamente através de um arquivo.bat
Para renomear automaticamente arquivos no Windows Server 2003
setlocal enabledelayedexpansion
for /f "tokens=2 delims= " %%a in ('date /t') do set date=%%a
set date=%date:/=-%
ren teste.txt teste-%date%.txt
Para renomear automaticamente arquivos no Windows XP
@echo off&setlocal enabledelayedexpansion
for /f "tokens=2 delims= " %%a in ('date /t') do set data=%%a
set data=%data:/=-%
ren teste.txt teste-%data%.txt
O porque da diferença, no meu caso, a data do servidor estava em inglês, e devido a aplicações como SQL server e Servidor Apache, preferi não arriscar mudar as configurações regionais.
Salve o que você preferir em um arquivo .bat, e agende no gerenciador de tarefas.
O resultado ao executar o arquivo .bat será teste-03-12-2010.txt no caso de ele ser executado hoje
Lembrando que o arquivo deverá estar na mesma pasta do arquivo, ou então adicione um comando no inicio do arquivo para executá-lo a partir de outra pasta, ex
cd c:/pasta/pasta
Muito obrigado !!
ResponderExcluirApenas um detalhe, estou fazendo este comando no win XP e copiando a linha:
ResponderExcluirfor /f "tokens=2 delims= " %%a in ('date /t') do set data=%%a
set data=%data:/=-%
ren xxx.txt xxx-%data%.txt
aqui deu erro de sintaxe, então substitui tudo para date e funcionou...
obrigado
Fibra,
ResponderExcluirObrigado, não tinha percebido isso, o script do XP funciona aqui para mim, mas parece que é porque o meu sistema é em português, e no servidor o "date" funcionou porque ele é inglês, e não por causa do sistema em sí.
Olá, tenho uma situação parecia e gostaria de saber se pode me ajudar. Tenho um arquivo que é gerado dentro de uma pasta sempre que um usuario do meu sistema dispara um processo. Este arquivo é importado diariamente pelo operador noturno para outro sistema, porem existem casos em que é necessaria a geraçao deste arquivo mais de uma vez por dia e o sistema sobreescreve o arquivo anterior sempre que é gerado um novo arquivo. Assim preciso de um batch que renomeie os arquivos sequencialmente, por exemplo, arquivo001.txt, arquivo002.txt, arquivo003.txt e assim sucessivamente. Este batch seria disparado por uma tarefa agendada a cada 5 minutos durante o dia, ou melhor ainda se pudesse ficar ativo o tempo todo no servidor monitorando a pasta de destino e renomeando os arquivos conforme fossem gerados. Enfim se puder me ajudar ficarei grato. Att Marco Aurelio.
ResponderExcluirMarco,
ResponderExcluirEstou meio sem tempo, mas veja o que eu consegui
Pensei em criar um arquivo chamado VARIAVEL.TXT que armazenaria a variável do numero, ele começaria com o conteúdo 1
Teríamos também um arquivo DOS com os seguintes comandos.
set /p var= variavel.txt
Linha 1 - onde ele lê o arquivo VARIAVEL.TXT e armazena o conteúdo na variável "var"
Linha 2 - Renomeia o arquivo
Linha 3 - Cria a variável "nova" que é a "var"+1
Linha 4 - [aí só funcionou no prompt, no .bat não], o que acho necessário...
um comando que resulte no valor da variável "nova" assim podemos substituir a atual, desta forma funciona apenas no prompt, mas quando tentei fazer com o arquivo .bat dentro do arquivo fica o numero, e depois um espaço
Ou temos que achar um jeito de criar esse arquivo sem espaços.
Ou um comando para eliminar o espaço ao ler o arquivo.
Acho que o segundo é mais fácil. se achar poste aqui, e eu achar também postarei.
Obrigado
Como o blog não exibe os comandos , tive que criar um tópico para colocar como foto, está aqui:
ResponderExcluirhttp://edsonredes.blogspot.com/2011/02/renomear-arquivo-sequencialmente-com.html
obrigado!
OLá pessoal fiz pra colocar data e hora... mas deu erro pq aparece uma Virgulazinha...do mal...
ResponderExcluirpause
for /f "tokens=2 delims= " %%a in ('date /t') do set data=%%a
for /f "tokens=2 delims= " %%a in ('time /t') do set time=%%a
pause
set data=%date:/= %
set Time=%time:/=:%
pause
ren xxx.txt xxx-%data%-%TIME%.txt
pause
Funcionando no Windows 11
ResponderExcluirsetlocal enabledelayedexpansion
for /f "tokens=2 delims= " %%a in ('date /t') do set date=%%a
set date=%date:/=-%
ren teste.txt teste-%date%.txt
Muito obrigado meu nobre, funcionou bem para o que queria fazer.
ResponderExcluirAss. Antonio AMazonas