10.24.2012

Manipulação de ficheiros - Windows

Existem 3 comandos principais para copiar ficheiros

  • copy: comando básico de cópia de ficheiros. Pode ser utilizado para agregar o conteúdo de vários ficheiros de texto num só.
  • xcopy: aumenta as potencialidades do comando copy permitindo a manipulação de subpastas
  • robocopy: o comando mais versártil, permite manipulação de estruturas de pastas e de permissões

Exemplos do comando copy:

Comando copy Comentários
c:\>copy test.txt test2.txt Cria o ficheiro test2.txt a partir do ficheiro test.txt
c:\>copy test1.txt+test2.txt testtotal.txt Cria o ficheiro testtotal.txt agregando os conteúdos de test1.txt+test2.txt.
c:\>copy *.txt total.txt Cria o ficheiro total.txt a partir de todos os ficheiros com a extensão txt na presente pasta
c:\data>copy *.* c:\arquivo Copia todos os ficheiros para a pasta arquivo

Comando xcopy Comentários
c:\>xcopy c:\data d:\data /s
c:\>xcopy c:\data d:\data\ /s
O switch /s copia todos os ficheiros, pastas e subpastas da origem para o destino. Usar "\" se a pasta de destino não existir. Não existindo, o sistema vai perguntar se pretende enviar os dados para um ficheiro ou pasta. Se escolher pasta, todos os dados são combinados num único ficheiro. Se escolher ficheiro, toda a esttutura de pastas é recriada.
c:\>xcopy c:\data d:\data\ /s /e O switch /e garante que as pastas vazias são copiadas
c:\>xcopy c:\data d:\data\ /s /e /t O switch /t apenas copia a estrutura de pastas sem copiar os ficheiros
c:\>xcopy c:\data d:\data\ /s /e /y O switch /y impede que o sistema pergunte se pretende escrever por cima de ficheiros existentes.

O robocopy tem mais funcionalidades que o xcopy, permitindo copiar a metadata associada com um ficheiro. A metadata é identificado com recurso a flags. As flags podem ser usadas com /copy para especificar a metadata a copiar.

robocopy (metadata flag) Comentários
c:\>robocopy c:\data d:\data\ /copy:d Flag de data (d). O d identifica a própria flag
c:\>robocopy c:\data d:\data\ /copy:da Flag de atríbuto (a), incluindo atríbutos como hidden ou read-only
c:\>robocopy c:\data d:\data\ /copy:dat
c:\>robocopy c:\data d:\data\
Flag com timestamps (t), incluido quando o ficheiro foi criado ou modificado. As flags d, a e t são uasadas por defeito. Assim sendo os comandos têm o mesmo efeito.
c:\>robocopy c:\data d:\data\ /copy:dats Flag de segurança (s) onde são contempladas as permissões NFTS
robocopy c:\data d:\data\ /copy:datso Flag de owner(o), que permite manter o dono original do ficheiro. Se não for usado o dono passa a ser o utilizador que executou o comando

Vejam-se alguns exemplos do comando robocopy para manipulação de pastas e ficheiros

Comandos robocopy Comentários
c:\>robocopy c:\data d:\data\ Copia todos os ficheiros para a drive d:. Não inclui pastas.
c:\>robocopy c:\data d:\data\ /s Copia todos os ficheiros e pastas e subpastas não vazias.
c:\>robocopy c:\data d:\data\ /e Copia todos os ficheiros, pastas e subpastas, incuido pastas vazias (note-se que não foi necessário incluir o switch /s
c:\>robocopy c:\data d:\data\ /e /purge O switch /purge elimina os ficheiros e pastas do destino que já não estejam na origem
c:\>robocopy c:\data d:\data\ /mir O switch /mir faz mirror de todo o conteúdo da origem no destino. Faz o mesmo que o comando do exemplo anterior.
c:\>robocopy c:\data d:\data\ /mov Copia todos os ficheiros para o destino eliminado-os da origem (mesmo que cortar e copiar). Não incui subpastas.
c:\>robocopy c:\data d:\data\ /move Similar ao comando anterior, inclui também todas as subpastas

O output do comando robocopy permite verificar quantos ficheiros e pastas foram copiados, ficheiros que não o foram, eventuais falhas e erros, etc.

Para verificar estas e outras opções existe uma ferramenta em modo gráfico muito boa. O Robocopy GUI. O robocopy deverá ser o comando por eleição a utilizar para manipulação avançada de copias de dados