none
Copiar arquivos RRS feed

  • Pergunta

  • Como posso adicionar nesse script do MARCO a função de deletar o arquivo antes de copiar o novo, mesmo que o de origem estjá sendo utilizado! existe como fazer isso?

    ' declaração de variaveis de trabalho
    Dim objFolderCopy
    Dim FilePathSource
    Dim FilePachDestination

    FilePathSource = "C:\pastaX"
    FilePachDestination = "\\servidor\pastaY"


    Set objFolderCopy = CreateObject("Scripting.FileSystemObject")

    ' verifica se a pasta destino existe
    if (objFolderCopy.FolderExists(FilePachDestination) = False) then


        'WSCript.Echo "Criando Pasta de Destino..."

        ' cria pasta de destino
        objFolderCopy.CreateFolder(FilePachDestination)
        
        'WSCript.Echo "Copiando Pasta..."
        
        ' copia pasta para o destino
        objFolderCopy.CopyFolder FilePathSource, FilePachDestination, True
        
        
    end if

    sexta-feira, 4 de maio de 2007 14:33

Respostas

  • Apagar um arquivo em uso? É meio complicado isso... não que seja impossível, mas o SO não permite naturalmente. Existem ferramentas pra isso, mas não recomendo.

    Qual o objetivo final disso?

    []s,

    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre scripting: http://viniciuscanto.blogspot.com
    terça-feira, 8 de maio de 2007 16:32
    Moderador

Todas as Respostas

  • Apagar um arquivo em uso? É meio complicado isso... não que seja impossível, mas o SO não permite naturalmente. Existem ferramentas pra isso, mas não recomendo.

    Qual o objetivo final disso?

    []s,

    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre scripting: http://viniciuscanto.blogspot.com
    terça-feira, 8 de maio de 2007 16:32
    Moderador
  • Bom Dia,

    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ópico

    Navegar 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 14:46
    Moderador