Ir ao conteúdo
  • Cadastre-se

Movendo todo o conteúdo da pasta para outra partição


Posts recomendados

Muito bem, o título aparentemente simples me tornou uma coisa complexa, então vamos ao objetivo:

Mover uma pasta inteira, com suas subpastas, e todo o contéudo, para outra partição ou outro local. Isso usando um script do tipo bat
 

Sou usuário linux, e se me permite vou colocar uma simples explicação como faria isso na linha de comando:

Sendo alvo a pasta que contém os arquivos. E sendo destino a pasta para qual vai, sendo destino uma pasta JÁ existente.

mv alvo destino

Entretanto faremos isso no ms-dos em um "arquivo.bat", para ter uma ideia maior da dificuldade, vou listar o conteúdo da pasta alvo:

dir /s /b C:\Alvo

E teremos:

c:\>dir /s /b c:\alvo
c:\alvo\DDD
c:\alvo\Nova Imagem de Bitmap.bmp
c:\alvo\Novo Documento de Texto.txt
c:\alvo\Pasta1
c:\alvo\Pasta2
c:\alvo\Pasta1\p1.docx
c:\alvo\Pasta1\p1.txt
c:\alvo\Pasta2\Pasta21
c:\alvo\Pasta2\Pasta22
c:\alvo\Pasta2\Pasta22\Novo(a) Planilha do Microsoft Excel.xlsx
c:\alvo\Pasta2\Pasta22\Pasta222
c:\alvo\Pasta2\Pasta22\Pasta222\Novo(a) Arquivo do WinRAR.rar
c:\alvo\Pasta2\Pasta22\Pasta222\Novo(a) Microsoft Access Banco de Dados.accdb

Ou seja no final teriamos que ter todos esses arquivos, se pensarmos na lógica do linux e fizermos 

c:\>move alvo destino

O resultado será C:\destino\alvo portanto essa sintaxe é equivocada

O que nos leva a pensar no seguinte:

 

c:\>move c:\alvo\*.* c:\destino

:oops:PAN

o comando move não aceita wildcards *

 

Se fizermos isso teremos o seguinte resultado:

c:\>move C:\Alvo\*.* C:\Destino
C:\Alvo\Nova Imagem de Bitmap.bmp
C:\Alvo\Novo Documento de Texto.txt
        2 dir(s) movido(s).

c:\>dir /s /b C:\Alvo
C:\Alvo\DDD
C:\Alvo\Pasta1
C:\Alvo\Pasta2
C:\Alvo\Pasta1\p1.docx
C:\Alvo\Pasta1\p1.txt
C:\Alvo\Pasta2\Pasta21
C:\Alvo\Pasta2\Pasta22
C:\Alvo\Pasta2\Pasta22\Novo(a) Planilha do Microsoft Excel.xlsx
C:\Alvo\Pasta2\Pasta22\Pasta222
C:\Alvo\Pasta2\Pasta22\Pasta222\Novo(a) Arquivo do WinRAR.rar
C:\Alvo\Pasta2\Pasta22\Pasta222\Novo(a) Microsoft Access Banco de Dados.accdb

c:\>dir /s /b C:\Destino
C:\Destino\Nova Imagem de Bitmap.bmp
C:\Destino\Novo Documento de Texto.txt

Na verdade teremos dois arquivos movidos para o destino, e as pastas com seus subconteúdos mantidas no Alvo. 

 

Uma vez que o comando move  não atende as expectativas, e pesquisando na internet encontrei o robocopy formalmente "Robust File Copy Utility"

 

ROBOCOPY

 

ROBOCOPY E:\Drive\ E: /MOVE /E

Onde as opções /MOVE "Move arquivos e diretórios e exclui-los da origem depois de serem copiados." e /E "Copia subdiretórios."

 

O robocopy atende aos objetivos, CONTUDO é um comando EXTREMAMENTE LENTO e por esse motivo não me é possível utiliza-lo, para se ter uma ideia 1GB levei mais de 2 horas para copiar. 


Testei também com o comando XCOPY e DEL com um desempenho muito ruim, porque ele precisa de tempo para copiar, e depois para apagar. 

 

SOLUÇÃO TEMPORÁRIA

 

Para que possa automatizar as tarefas, faço por último essas cópias usando o "Explorer" entro no windows e movo as pastas pelo mouse, porém devo lembra-los que meu objetivo, é criar um script em batch para que possa automatizar as tarefas, mas em questão de desempenho o Explorer se mostrou mais rápido que o ms-dos.

 

Fica a pergunta: Como mover uma pasta com suas subpastas, conteúdo e subconteúdo utilizando a "linha de comando" do ms-dos?


 

Referências:

move: https://technet.microsoft.com/en-us/library/bb490935.aspx

Robocopy: https://technet.microsoft.com/pt-br/library/cc733145(v=ws.10).aspx

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Citação

XCOPY origem [destino] [/A | /M] [/D[:data]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
                           [/EXCLUDE:arquivo1[+arquivo2][+arquivo3]...]

  origem       Especifica o(s) arquivo(s) a ser(em) copiado(s).
  destino  Especifica o local e/ou o nome dos novos arquivos.
  /A           Copia somente arquivos com o atributo de arquivamento
               definido; não altera o atributo.
  /M           Copia somente arquivos com o atributo de arquivamento
               definido; desativa o atributo de arquivamento.
  /D:m-d-a     Copia os arquivos alterados durante ou após a data
               especificada. Se não for definida uma data, copia apenas os
               arquivos cujo tempo de origem seja mais novo do que o tempo
               de destino.
  /EXCLUDE:arquivo1[+arquivo2][+arquivo3]...
               Especifica uma lista de arquivos contendo cadeias de
               caracteres. Cada cadeia deve estar em uma linha separada nos
               arquivos. Quando qualquer cadeia corresponder a qualquer parte
               do caminho absoluto do arquivo a ser copiado, esse arquivo
               deixará de ser copiado. Por exemplo, especificar uma cadeia de
               caracteres como \obj\ ou .obj excluirá todos os arquivos sob o
               diretório obj ou com a extensão .obj, respectivamente.
  /P           Solicita confirmação antes de criar cada arquivo de destino.
  /S           Copia diretórios e subdiretórios, exceto os vazios.
  /E           Copia diretórios e subdiretórios, inclusive os vazios.
               O mesmo que /S /E. Pode ser usado para modificar /T.
  /V           Verifica o tamanho de cada novo arquivo.
  /W           Solicita que você pressione uma tecla antes de copiar.
  /C           Continua copiando, mesmo que ocorram erros.
  /I           Se o destino não existir e mais de um arquivo estiver sendo
               copiado, pressupõe que o destino deve ser um diretório.
  /Q           Não exibe os nomes de arquivos ao copiar.
  /F           Exibe os nomes de arquivos de origem e de destino completos ao
               copiar.
  /L           Exibe arquivos que seriam copiados.
  /G           Permite a cópia de arquivos criptografados para um destino que
               não oferece suporte a criptografia.
  /H           Copia arquivos ocultos e do sistema também.
  /R           Substitui arquivos somente leitura.
  /T           Cria a estrutura de diretórios, mas não copia arquivos. Não
               inclui diretórios ou subdiretórios vazios. /T /E inclui
               diretórios e subdiretórios vazios.
  /U           Copia apenas os arquivos que já existem no destino.
  /K           Copia atributos. O Xcopy normal redefinirá os atributos
               somente leitura.
  /N           Copia usando os nomes curtos gerados.
  /O           Copia as informações de ACL e proprietário do arquivo.
  /X           Copia configurações de auditoria de arquivo (implica /O).
  /Y           Suprime o prompt para você confirmar se deseja substituir
               um arquivo de destino existente.
  /-Y          Exibe o prompt para você confirmar se deseja substituir
               um arquivo de destino existente.
  /Z           Copia arquivos de rede no modo reiniciável.
  /B           Copia o próprio Vínculo Simbólico, e não o destino do vínculo.
  /J           Copia usando E/S sem buffer. Recomendável para arquivos muito
               grandes.

A opção /Y pode ser predefinida na variável de ambiente COPYCMD.
Isso pode ser anulado por /-Y na linha de comando.

 

adicionado 14 minutos depois

Do meu tempo de DOS, o "move" não fazia isso mesmo. Na verdade, se vocÊ olhar, o "move" do windows nada mais é que um copiador, que depois deleta o original. Sendo o DOS monotarefa em sua essência, eu não vi comando que fizesse o move.. então eu iria de Xcopy, e depois deletava com o deltree

 

Comando "help"

ASSOC          Exibe ou modifica associações de extensões de arquivo.
ATTRIB         Exibe ou altera atributos de arquivos.
BREAK          Define ou limpa a verificação estendida CTRL+C.
BCDEDIT        Define propriedades no banco de dados de inicialização para
               controlar o carregamento da inicialização.
CACLS          Exibe ou modifica listas de controle de acesso de arquivos.
CALL           Chama um programa em lotes por meio de outro.
CD             Exibe o nome do diretório atual ou faz alterações nele.
CHCP           Exibe ou define o número da página de código ativa.
CHDIR          Exibe o nome do diretório atual ou faz alterações nele.
CHKDSK         Verifica um disco e exibe um relatório de status.
CHKNTFS        Exibe ou modifica a verificação do disco na inicialização.
CLS            Limpa a tela.
CMD            Inicia uma nova instância do interpretador de comandos do
               Windows.
COLOR          Define as cores padrão do primeiro plano e do plano de fundo
               do console.
COMP           Compara o conteúdo de dois arquivos ou grupos de arquivos.
COMPACT        Exibe ou altera a compactação de arquivos em partições NTFS.
CONVERT        Converte volumes FAT em NTFS. Não é possível converter a
               unidade atual.
COPY           Copia um ou mais arquivos para outro local.
DATE           Exibe ou ajusta a data.
DEL            Exclui um ou mais arquivos.
DIR            Exibe uma lista de arquivos e subdiretórios em um diretório.
DISKCOMP       Compara o conteúdo de dois disquetes.
DISKCOPY       Copia o conteúdo de um disquete para outro.
DISKPART       Exibe ou configura propriedades de partição de disco.
DOSKEY         Edita linhas de comando, volta a chamar comandos do Windows e
               cria macros.
DRIVERQUERY    Exibe status e propriedades do driver de dispositivo atual.
ECHO           Exibe mensagens ou ativa/desativa o eco de comandos.
ENDLOCAL       Encerra a localização de alterações de ambiente em um arquivo
               em lotes.
ERASE          Exclui um ou mais arquivos.
EXIT           Sai do programa CMD.EXE (interpretador de comandos).
FC             Compara dois arquivos ou grupos de arquivos e exibe as
               diferenças entre eles.
FIND           Procura uma cadeia de caracteres de texto em um ou mais
               arquivos.
FINDSTR        Procura cadeias de caracteres em arquivos.
FOR            Executa um determinado comando para cada arquivo em um grupo
               de arquivos.
FORMAT         Formata um disco para ser usado com o Windows.
FSUTIL         Exibe ou configura as propriedades do sistema de arquivos.
FTYPE          Exibe ou modifica os tipos de arquivo utilizados em
               associações de extensões de arquivo.
GOTO           Direciona o interpretador de comandos do Windows para uma
               linha identificada em um programa em lotes.
GPRESULT       Exibe informações de diretiva de grupo para o computador ou
               usuário.
GRAFTABL       Permite que o Windows exiba um conjunto de caracteres
               estendidos em modo gráfico.
HELP           Fornece informações de ajuda sobre comandos do Windows.
ICACLS         Exibir, modificar, fazer backup ou restaurar ACLs de
               arquivos e diretórios.
IF             Realiza processamento condicional em arquivos em lotes.
LABEL          Cria, altera ou exclui o rótulo de volume de um disco.
MKLINK         Cria Vínculos Simbólicos e Links Físicos
MODE           Configura um dispositivo do sistema.
MORE           Exibe a saída fazendo pausa a cada tela.
MOVE           Move um ou mais arquivos de um diretório para outro diretório.
OPENFILES      Exibe arquivos abertos por usuários remotos para um
               compartilhamento de arquivo.
PATH          Exibe ou define um caminho de pesquisa para arquivos executáveis.
PAUSE          Suspende o processamento de um arquivo em lotes e exibe uma
               mensagem.
POPD           Restaura o valor anterior do diretório atual salvo por PUSHD.
PRINT          Imprime um arquivo de texto.
PROMPT         Altera o prompt de comando do Windows.
PUSHD          Salva o diretório atual e o altera em seguida.
RD             Remove um diretório.
RECOVER        Recupera informações legíveis de um disco defeituoso ou
               danificado.
REM            Grava comentários (observações) em arquivos em lotes ou no
               CONFIG.SYS.
REN            Altera o nome de um ou mais arquivos.
RENAME         Altera o nome de um ou mais arquivos.
REPLACE        Substitui arquivos.
RMDIR          Remove um diretório.
ROBOCOPY       Utilitário avançado para copiar arquivos e árvores de diretório
SET            Exibe, define ou remove variáveis de ambiente do Windows.
SETLOCAL       Inicia a localização de alterações de ambiente em um arquivo
               em lotes.
SC             Exibe ou configura serviços (processos em segundo plano).
SCHTASKS       Agenda a execução de comandos e programas em um computador.
SHIFT          Altera a posição dos parâmetros substituíveis em um arquivo em
               lotes.
SHUTDOWN       Permite o desligamento local ou remoto adequado do computador.
SORT           Classifica a entrada.
START          Inicia uma janela separada para executar um programa ou
               comando especificado.
SUBST          Associa um caminho a uma letra de unidade.
SYSTEMINFO     Exibe a configuração e propriedades específicas da máquina.
TASKLIST       Exibe todas as tarefas em execução no momento, inclusive
               serviços.
TASKKILL       Termina ou interrompe um processo ou aplicativo em execução.
TIME           Exibe ou ajusta a hora do sistema.
TITLE          Define o título da janela para uma sessão do CMD.EXE.
TREE           Exibe graficamente a estrutura de diretórios de uma unidade
               ou caminho.
TYPE           Exibe o conteúdo de um arquivo de texto.
VER            Exibe a versão do Windows.
VERIFY         Faz com que o Windows verifique se os arquivos estão gravados
               corretamente em um disco.
VOL            Exibe o rótulo de volume e o número de série de um disco.
XCOPY          Copia arquivos e árvores de diretórios.
WMIC           Exibe informações WMI em um comando interativo do shell.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Copiar ACLs diminui o desempenho. Por padrão, o robocopy não copia (/COPY e /DCOPY não incluem S); as pastas e arquivos ficam com as permissões herdadas do diretório pai no destino. Fora aumentar o número de threads com a opção /MT[:n], dê uma olhada nestes programas:

 

https://ipmsg.org/tools/fastcopy.html.en

http://www.codesector.com/teracopy

 

EDIT

Claro, há o PowerShell: Move-Item.

 

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/move-item

 

Aí está algo que está na minha lista de coisas a fazer: começar a migrar (e testar...) todos meus scripts de CMD para PowerShell.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Marcos FRM  azá guri.. porque não te chamei antes :P

 

Pergunto, esse programa que tu citou trabalha com a notação 255 caracteres certo? ele não tem problemas com a notação padrão windows? 

 

Algum tempo atrás, e acho que foi algum problema de SO, um maluco conseguiu com o Xcopy trazer tudo à notação 8.3 do DOS. Até hoje não entendi o que ele fez

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...