none
mover arquivos RRS feed

  • Pergunta

  • Boa tarde, ja vi alguns scripts aqui no forum mas nao consegui nada que se adaptasse a minha necessidade.

    Eu tenho uma pasta no servidor onde são enviadas todas as digitalizações de duas impressoras, e eu preciso mover esses arquivos criando uma pasta para cada dia.

    Por exemplo: Eu tenho uma digitalização do dia 02/12/2012, entao deve ser criada uma pasta com essa data e o arquivo movido para dentro dela.

    Obs.: a extensão é .PDF.

    Grato

    Paulo Brincker

    segunda-feira, 3 de dezembro de 2012 20:07

Respostas

  • Paulo,

    Veja este .PS1 (PowerShell)

    $origem= "c:\temp"
    $destino="c:\teste"
    
    foreach($arquivo in (Get-ChildItem $origem -filter "*.pdf")){
        $ano=($arquivo.creationtime).year
        $mes="0"+""+($arquivo.creationtime).month
        $mes=$mes.substring($mes.length - 2,2)
        
        $dia="0"+""+($arquivo.creationtime).day
        $dia=$dia.substring($dia.length - 2,2)
        
        $destino_final = Join-Path -path $destino -childpath "$ano$mes$dia"
      
        New-Item  -type directory -path $destino_final -erroraction "SilentlyContinue"
        
        Move-Item $arquivo.fullname -Destination $destino_final
    
    }

    Alguns detalhes:

    1)As duas primeiras você deve configurar a pasta de origem(onde seu scanner colocar as imagens) e a pasta de destino(pasta onde será criada uma subpasta para cada dia)

    2) Eu filtrei para mover apenas pdf, se quiser que mova qualquer arquivo é só tirar o -filter "*.pdf"

    3)Eu crio as subpastas no format YYYYMMDD, este formato é legal pois se vc ordenar o diretório ele fica por ordem de data, mas se este formato não for o melhor pra vc basta mexer na linha abaixo , no final dela.

    $destino_final = Join-Path -path $destino -childpath "$ano$mes$dia"


    Fábio de Paula Junior

    segunda-feira, 3 de dezembro de 2012 22:22
    Moderador

Todas as Respostas

  • Paulo,

    Veja este .PS1 (PowerShell)

    $origem= "c:\temp"
    $destino="c:\teste"
    
    foreach($arquivo in (Get-ChildItem $origem -filter "*.pdf")){
        $ano=($arquivo.creationtime).year
        $mes="0"+""+($arquivo.creationtime).month
        $mes=$mes.substring($mes.length - 2,2)
        
        $dia="0"+""+($arquivo.creationtime).day
        $dia=$dia.substring($dia.length - 2,2)
        
        $destino_final = Join-Path -path $destino -childpath "$ano$mes$dia"
      
        New-Item  -type directory -path $destino_final -erroraction "SilentlyContinue"
        
        Move-Item $arquivo.fullname -Destination $destino_final
    
    }

    Alguns detalhes:

    1)As duas primeiras você deve configurar a pasta de origem(onde seu scanner colocar as imagens) e a pasta de destino(pasta onde será criada uma subpasta para cada dia)

    2) Eu filtrei para mover apenas pdf, se quiser que mova qualquer arquivo é só tirar o -filter "*.pdf"

    3)Eu crio as subpastas no format YYYYMMDD, este formato é legal pois se vc ordenar o diretório ele fica por ordem de data, mas se este formato não for o melhor pra vc basta mexer na linha abaixo , no final dela.

    $destino_final = Join-Path -path $destino -childpath "$ano$mes$dia"


    Fábio de Paula Junior

    segunda-feira, 3 de dezembro de 2012 22:22
    Moderador
  • Obrigado Fábio, só preciso modificar uma coisa e não sei o parametro.

    no lugar de $(arquivo.creationtime). year (ele pega a data de criação do arquivo, mas se eu copiar esse arquivo antes muda a data da criação)

    entao o certo seria pegar a data de modificação, qual seria o parametro?

    terça-feira, 4 de dezembro de 2012 12:21
  • Paulo,

    Os atributos relacionados a data são estes,:

    CreationTime    
    LastAccessTime   
    LastWriteTime    



    Fábio de Paula Junior

    terça-feira, 4 de dezembro de 2012 13:45
    Moderador
  • MUITO obrigado mesmo Fábio, LastwriteTime era o que eu estava procurando. VLW
    terça-feira, 4 de dezembro de 2012 14:21