Usuário com melhor resposta
Ajuda com script Batch "FOR /F %%i IN"

Pergunta
-
Eu tenho um script de backup que acabei fazendo com referencia de vários outros encontrados pela internet, a cada necessidade fui modificando até chegar no que utilizo hoje.
cd "C:\data" FOR /F %%i IN ('DIR /B /O:-D *.log') DO ( copy "%%i" Z:\segunda\relatorio.log
ele entra na pasta onde são gerados os arquivos de log, lê o arquivo mais recente de dentro desse diretório e copia para o outro diretório.
estou tentando enxuta um pouco esse script.
então vamos lá o comando DIR /B /O:-D c:\data\*.log no cmd funciona normalmente ele me lista os arquivos. mas colocando o caminho no comando ele não funciona e não apresenta nenhuma mensagem de erro. ele executa e não faz a copia
FOR /F %%i IN ('DIR /B /O:-D "C:\data\*.log"') DO ( copy "%%i" Z:\relatorio.log
procurei em todo lugar como tentar resolver esse pequeno problema e não consigo. essa parte do FOR é meio complicado para minha cabeça kkk
será que alguém consegue me ajudar nisso
Respostas
-
Mauricio,
Primeiramente veja se o FOR está executando, eu testei ele assim.
FOR /F %%i IN ('DIR /B /O:-D "C:\data\*.log"') DO ( echo %%i) pause
Funcionou!! Ele listou o nome dos arquivos .log da pasta c:\data.
"Segundamente", veja se o copy está funcionando, vc está copiando assim:
copy <nomearquivo> z:\relatorio.log
Isso só vai funcionar se o diretório corrente for o data.
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 7 de outubro de 2014 18:39
- Marcado como Resposta Fábio JrModerator quarta-feira, 8 de outubro de 2014 19:37
Todas as Respostas
-
Mauricio,
Primeiramente veja se o FOR está executando, eu testei ele assim.
FOR /F %%i IN ('DIR /B /O:-D "C:\data\*.log"') DO ( echo %%i) pause
Funcionou!! Ele listou o nome dos arquivos .log da pasta c:\data.
"Segundamente", veja se o copy está funcionando, vc está copiando assim:
copy <nomearquivo> z:\relatorio.log
Isso só vai funcionar se o diretório corrente for o data.
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 7 de outubro de 2014 18:39
- Marcado como Resposta Fábio JrModerator quarta-feira, 8 de outubro de 2014 19:37
-
Mauricio,
Primeiramente veja se o FOR está executando, eu testei ele assim.
FOR /F %%i IN ('DIR /B /O:-D "C:\data\*.log"') DO ( echo %%i) pause
Funcionou!! Ele listou o nome dos arquivos .log da pasta c:\data.
"Segundamente", veja se o copy está funcionando, vc está copiando assim:
copy <nomearquivo> z:\relatorio.log
Isso só vai funcionar se o diretório corrente for o data.
Fábio de Paula Junior
A primeira parte normal ele lista os arquivos, já a segunda ele não copia da lista para a pasta de destino.
e pelo que to vendo nem vai adiantar muito pois o próximo comando eu tenho que especificar a pasta pois ele chama um programa e pra cada servidor que eu for usar pode ser que a pasta mude