none
Ajuda com Arquivo .BAT RRS feed

  • Pergunta

  • Pessoal olá.

    Preciso muito da ajuda dos amigos do Forum MSDN.
    Preciso fazer um bat que cheque o tamanho de um arquivo e se for maior que o informado, copia este arquivo para uma pasta especifica, porém ele deve copiar com um nome equivalente a data e hora que foi executado.

    O problema é que o bat pode ser executado mais de uma vez por dia e gerar arquivos no mesmo lugar.
    O que consegui até agora é verificar  tamanho, copiar tranquilo, mas o problema é em relação a colocar a data é hora como nome do arquivo.

    Podem me ajudar?

    quarta-feira, 14 de julho de 2010 14:57

Respostas

  • Consegui achar a forma certa que precisava.

    Obrigado a todos de qualquer forma.

    Segue o código que checa o tamanho do arquivo, copia ele para outro lugar e renomeia com a data corrente.

    @ECHO off
    FOR %%a in (dir "c:\micro_si\mov.txt") do (set /a tamanho=%%~za)
    echo tamanho do arquivo = %tamanho% bytes

    IF %tamanho% GEQ 50 (
    copy c:\micro_si\mov.txt c:\Backup\
    ren c:\Backup\mov.txt mov.%date:~0,2%%date:~3,2%%date:~6,4%.txt

    )
    exit
    cls


    • Marcado como Resposta Maciel Alves quinta-feira, 15 de julho de 2010 13:34
    quinta-feira, 15 de julho de 2010 13:34

Todas as Respostas

  • Post seu script para verificamos.
    Leonardo Sousa

    MCP-MCDST-MCSA-MCSE-MCTS-MCITP
    Analista de TI
    quarta-feira, 14 de julho de 2010 18:07
  • Bom esta dividido em duas partes, pois está meio complicado de fazer.

    Está primeira parte checa se o arquivo analisado é maior ou igual a 1.7GB.

    @ECHO off

    FOR %%a in (dir "F:\GX620\GX620001.GHS") do (set /a tamanho=%%~za) 
    echo tamanho do arquivo = %tamanho%
    IF %tamanho% GEQ 1825361100 (

    FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE/T') DO SET DATA=%%B-%%C-%%D

    SET ARQ_ENT=%1
    SET ARQUIVO=%ARQ_ENT:~0,-4%
    SET ARQ_EXT=%ARQ_ENT:~-4%

    aqui deveria ficar o código que pega o arquivo, copia para outra pasta e renomeia ele com a data e hora corrente.

    ) ELSE (echo nao e maior)

    pause
    cls

     

    Esta segunda parte, faz as vezes de renomear o arquivo com a data, mas para fazer ele funcionar, tenho que colocar o comando BAT no cmd mais o nome do arquivo na frente, mas isso é ruim, quando colocar lá dentrodo IF, o nome do arquivo tem que estar lá.

    @ECHO OFF

    FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE/T') DO SET DATA=%%B-%%C-%%D
    SET ARQ_ENT=%1
    SET ARQUIVO=%ARQ_ENT:~0,-4%
    SET ARQ_EXT=%ARQ_ENT:~-4%

    REN %1 %mov%%DATA%%ARQ_EXT%

    Isto é o que eu tenho até agora.

    Flw
    Maciel

    quarta-feira, 14 de julho de 2010 18:33
  • Consegui achar a forma certa que precisava.

    Obrigado a todos de qualquer forma.

    Segue o código que checa o tamanho do arquivo, copia ele para outro lugar e renomeia com a data corrente.

    @ECHO off
    FOR %%a in (dir "c:\micro_si\mov.txt") do (set /a tamanho=%%~za)
    echo tamanho do arquivo = %tamanho% bytes

    IF %tamanho% GEQ 50 (
    copy c:\micro_si\mov.txt c:\Backup\
    ren c:\Backup\mov.txt mov.%date:~0,2%%date:~3,2%%date:~6,4%.txt

    )
    exit
    cls


    • Marcado como Resposta Maciel Alves quinta-feira, 15 de julho de 2010 13:34
    quinta-feira, 15 de julho de 2010 13:34