none
Como copiar arquivo de uma pasta pra outra automaticamente, obedecendo a estrutura? RRS feed

  • Pergunta

  • Olá pessoal, sou novo a área vbs, mas sou desenvolvedor web há 6 ou 7 anos...

    estou com um problema que é o seguinte:

    - ao terminar de trabalhar em um arquivo, meus usuários devem clicar sobre ele com o botão direito e clicar em "backup".

    tal botão deve conter uma função que reconhece o local que o arquivo se encontra e o copia para uma estrutura de pastas igual em outro local... exemplo:

    c:\arquivos\nanana\nono\ttt.txt

    deve ser copiado para:

    d:\backup\nanana\nono\ttt.txt


    assim como:

    c:\arquivos\nanana\file2.doc

    deve ser copiado para:

    d:\backup\nanana\file2.doc


    Lembrando que como vai ficar no botão direito do mouse, e esse script deve servir para qualquer arquivo clicado, não é possível armazenar os locais ou nomes no proprio VBS... tudo dinamico... =/

    é, eu sei, já cheguei pegando pesado...

    Eu já encontrei alguns metodos como o FSO e etc... mas estou com uma certa dficuldade em receber o nome/endereço do arquivo como parâmetro para poder efetuar a ação...

    aguardo um help de vcs Wink

    t+
    quinta-feira, 31 de maio de 2007 17:54

Respostas

  • Recomendo a leitura desses dois links. O primeiro é simples, e trata de como obter parâmetros. O segundo, da criação de shell-extensions... esse é mais baixo nível. O grande problema acho que nem é a criação da extensão em si... ela pode ser um script. O problema é onde colocar ela no registro. Minha dica é instalar um programa que apareça no menu de contexto e procurar no registro como ela trabalha... pra então copiar. O Vim para Windows e alguns dos Powertoys como o Open CMD here são exemplos disso.

    http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_ywsa.mspx

    http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=creating+shell+extensions

    []s,

    Vinicius Canto
    MVP Windows Server - Admin Frameworks

    quinta-feira, 26 de julho de 2007 16:33
    Moderador

Todas as Respostas

  • Olá,

    você poderia dar mais detalhes do que gostaria de fazer? Ficou meio (pra falar a verdade, bastante) vago sobre onde isso vai funcionar. É um script simples, VBS? Uma página? Uma extensão do shell que apareça no botão direito sempre que clicar em um arquivo qualquer no Windows Explorer?

    []s,

    Vinicius Canto
    MVP Scripting
    terça-feira, 5 de junho de 2007 04:20
    Moderador
  • "Uma extensão do shell que apareça no botão direito sempre que clicar em um arquivo qualquer no Windows Explorer?"

    essa seria a melhor opção...


    quarta-feira, 20 de junho de 2007 03:31
  • Recomendo a leitura desses dois links. O primeiro é simples, e trata de como obter parâmetros. O segundo, da criação de shell-extensions... esse é mais baixo nível. O grande problema acho que nem é a criação da extensão em si... ela pode ser um script. O problema é onde colocar ela no registro. Minha dica é instalar um programa que apareça no menu de contexto e procurar no registro como ela trabalha... pra então copiar. O Vim para Windows e alguns dos Powertoys como o Open CMD here são exemplos disso.

    http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_ywsa.mspx

    http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=creating+shell+extensions

    []s,

    Vinicius Canto
    MVP Windows Server - Admin Frameworks

    quinta-feira, 26 de julho de 2007 16:33
    Moderador
  • Boa Tarde,

    Manipulando arquivos e pastas no Power Shell.
    Fonte: http://technet.microsoft.com/pt-br/library/dd315304.aspx

    Trabalhando com arquivos e pastas
    Este tópico ainda não foi avaliado como Avalie este tópicoNavegar pelas unidades do Windows PowerShell e manipular os itens contidos ali é similar à manipulação de arquivos e pastas das unidades de disco do Windows. Discutiremos como podemos lidar com tarefas específicas da manipulação de arquivos e pastas nesta seção.

    Listando todos os arquivos e pastas de uma pasta

    Você pode obter todos os itens contidos em uma pasta usando Get-ChildItem. Para exibir itens ocultos ou do sistema, adicione o parâmetro opcional Force. Por exemplo, este comando exibe o conteúdo direto da Unidade C do Windows PowerShell (que é a mesma unidade C física do Windows):

    Get-ChildItem -Force C:\

    O comando lista somente os itens diretamente contidos, como faz o comando DIR do Cmd.exe ou o ls em um shell do UNIX. Para exibir os itens contidos, você também precisa especificar o parâmetro -Recurse. (Esse processo pode demorar muito para ser concluído.) Para listar todo o conteúdo da unidade C:

    Get-ChildItem -Force C:\ -Recurse

    Get-ChildItem pode filtrar itens com os parâmetros PathFilterIncludeExclude, mas esses parâmetros geralmente se baseiam apenas no nome. Você pode executar a filtragem complexa baseada em outras propriedades de itens usando Where-Object.

    O comando a seguir encontra todos os executáveis da pasta Program Files modificados depois de 1o de outubro de 2005 e que não sejam nem menores do que 1 megabyte nem maiores do que 10 megabytes:

    Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt "2005-10-01") -and ($_.Length -ge 1m) -and ($_.Length -le 10m)}

    Copiando arquivos e pastas

    A cópia é feita com Copy-Item. O comando a seguir faz o backup de C:\boot.ini em C:\boot.bak:

    Copy-Item -Path c:\boot.ini -Destination c:\boot.bak

    Se o arquivo de destino já existir, a tentativa de cópia falhará. Para substituir um destino pré-existente, utilize o parâmetro Force:

    Copy-Item -Path c:\boot.ini -Destination c:\boot.bak -Force

    Esse comando funciona mesmo quando o destino é somente leitura.

    A cópia de pastas funciona da mesma maneira. Este comando copia de forma recursiva a pasta C:\temp\test1 para a nova pasta c:\temp\DeleteMe:

    Copy-Item C:\temp\test1 -Recurse c:\temp\DeleteMe

    Você também pode copiar uma seleção de itens. O comando a seguir copia todos os arquivos .txt contidos em qualquer local de c:\data para c:\temp\text:

    Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination c:\temp\text

    Você ainda pode usar outras ferramentas para fazer cópias no sistema de arquivos. XCOPY, ROBOCOPY e objetos COM, como Scripting.FileSystemObject, funcionam no Windows PowerShell. Por exemplo, você pode usar a classeScripting.FileSystem COM do Windows Script Host para fazer backup de C:\boot.ini em C:\boot.bak:

    (New-Object -ComObject Scripting.FileSystemObject).CopyFile("c:\boot.ini", "c:\boot.bak")

    Criando arquivos e pastas

    A criação de novos itens funciona da mesma forma em todos os provedores do Windows PowerShell. Se um provedor do Windows PowerShell tiver mais de um tipo de item – por exemplo, o provedor FileSystem do Windows PowerShell faz a distinção de diretórios e arquivos – você terá de especificar o tipo do item.

    Este comando cria uma nova pasta, C:\temp\New Folder:

    New-Item -Path 'C:\temp\New Folder' -ItemType "directory"

    Este comando cria um novo arquivo vazio, C:\temp\New Folder\file.txt

    New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType "file"

    Removendo todos os arquivos e pastas de uma pasta

    Você pode remover os itens contidos usando Remove-Item, mas terá de confirmar a remoção caso o item contenha algo mais. Por exemplo, se você tentar excluir a pasta C:\temp\DeleteMe, que contém outros itens, o Windows PowerShell solicita a confirmação antes de excluir a pasta:

    Remove-Item C:\temp\DeleteMe
    
    Confirm
    The item at C:\temp\DeleteMe has children and the -recurse parameter was not
    specified. If you continue, all children will be removed with the item. Are you
    sure you want to continue?
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
    (default is "Y"):

    Caso você não queira que haja uma solicitação para cada item contido, especifique o parâmetro Recurse:

    Remove-Item C:\temp\DeleteMe -Recurse

    Mapeando uma pasta local como uma unidade acessível do Windows

    Você também pode mapear uma pasta local usando o comando subst. O comando a seguir cria um unidade local P: com raiz no diretório local Arquivos de Programas:

    subst p: $env:programfiles

    Assim como acontece com as unidades de rede, as unidades mapeadas no Windows PowerShell com subst ficam imediatamente visíveis no shell do Windows PowerShell.

    Lendo um arquivo de texto em uma matriz

    Um dos formatos de armazenamento mais comuns para dados de texto é em um arquivo com linhas separadas, tratadas como elementos de dados distintos. O cmdlet Get-Content pode ser usado para ler todo o arquivo de uma só vez, como mostrado aqui:

    PS> Get-Content -Path C:\boot.ini
    [boot loader]
    timeout=5
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"
     /noexecute=AlwaysOff /fastdetect
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=" Microsoft Windows XP Professional 
    with Data Execution Prevention" /noexecute=optin /fastdetect

    Get-Content já trata os dados lidos do arquivo como uma matriz, com um elemento por linha do conteúdo do arquivo. Você pode confirmar isso verificando Length no conteúdo retornado:

    PS> (Get-Content -Path C:\boot.ini).Length
    6

    Esse comando é mais útil para a inserção de listas de informação diretamente no Windows PowerShell. Por exemplo, você poderia armazenar uma lista de nomes de computadores ou de endereços IP em um arquivo C:\temp\domainMembers.txt, com um nome em cada linha do arquivo. Você pode usar Get-Content para recuperar o conteúdo do arquivo e colocá-lo na variável $Computers:

    $Computers = Get-Content -Path C:\temp\DomainMembers.txt

    $Computers agora é uma matriz que contém um nome de computador em cada elemento.


    Abs

    * Ajude a organizar melhor o Fórum, dando Feedback sobre a dúvida solicitada, e marcando como Útil e como Resposta, a postagem dos colaboradores que resolveram o seu caso, ou foram úteis *

    domingo, 3 de junho de 2012 15:21
    Moderador