usando a linha de comando, eu gostaria de copiar um diretório para outro. Por exemplo, há diretório C:/test
e C:/test2
.
Eu gostaria de copiar C:/test
em C:/test2
modo que o resultado seráC:/test2/test
Tudo o que eu encontrei até agora só vai copiar os arquivos e pastas contidas C:/test
em C:/test2
, mas deixa de fora o diretório pai.
windows
command-line
Scott Chamberlain
fonte
fonte
Respostas:
Tente usar
XCOPY
com o/E
interruptor. Mais informações aqui .Não tenho acesso a essas informações do meu cérebro há anos !
ATUALIZAR
A documentação diz que ele copia todos os arquivos e subdiretórios do diretório de origem (o que significa que o diretório pai não é criado), então você teria que criar
test
noC:\test2
primeiro e depois usarXCOPY
.fonte
robocopy /CREATE /COPYALL /DCOPY:T src dst
apenas copiar a pasta e os arquivos vazios, mas preservar todos os carimbos de data e hora e outros atributos.test
ainda precisa ser criada.md test
usarxcopy
era trivialmente óbvio.copy
pasta não criar uma nova pasta e copiar os conteúdos nela.Aqui estão as informações sobre o XCOPY [ 1 , 2 ]
fonte
Use ROBOCOPY se você estiver criando scripts de backup. O xcopy foi descontinuado e provavelmente será desativado em breve. A robocopy pode fazer tudo o que o xcopy pode. Também é mais flexível e confiável. Criar scripts com robocopy os tornará à prova de futuro.
Use robocopy para copiar pastas facilmente. O comando robocopy substitui o comando xcopy. Ele pode copiar rapidamente pastas inteiras sem precisar se preocupar em definir o conteúdo. Por exemplo, para copiar todo o conteúdo do diretório C: \ tools para a nova pasta D: \ backup \ tools, digite o seguinte:
O modificador / e diz ao robocopy para incluir todos os subdiretórios. Isso inclui pastas vazias. O robocopy copia automaticamente os arquivos ocultos e do sistema. Ele criará novos diretórios se eles não existirem no local de destino.
Espelhe um diretório. O espelhamento de um diretório é ótimo para fazer backups. A opção de espelhamento do robocopy copiará todo o conteúdo da origem para o destino. Ele excluirá qualquer coisa no destino que não exista na fonte. Isso garante que seu backup tenha apenas as versões mais recentes de seus arquivos. Por exemplo, para espelhar C: \ Usuários \ Meus Documentos em D: \ backup \ Meus Documentos, digite o seguinte: [4]
Esta função preservará todas as permissões dos arquivos originais.
Ative a reinicialização. Convém incluir a capacidade de reiniciar o processo, caso a conexão seja cortada no meio da cópia.
Registre o processo de cópia. robocopy permite criar um arquivo de log. Isso pode ajudá-lo a identificar problemas ou gerar um arquivo do que foi copiado.
O modificador / log + acrescentará o arquivo de log existente em vez de substituí-lo. Se você preferir substituir o arquivo de log antigo, use /log:.txt.
fonte
Eu recomendo a robocopy sobre o xcopy , pois ele tem muito mais opções, incluindo manter os timestamps intactos, o que acho essencial.
O robocopy precisa ser adicionado no XP / 2003, mas é padrão do Vista em diante.
Na verdade, eu geralmente uso o xxcopy , mas a versão de 64 bits não é gratuita.
fonte
robocopy
é um programa do Windows. A pergunta era sobre o DOS.Por exemplo, se você precisar copiar os
E:
dados daH:
unidade para a unidade (disco rígido externo) através da linha de comando ou do ambiente de comando xboot.fonte
Se a pergunta original é o que eu estava procurando uma resposta, então eu, e obviamente ninguém acima, encontrei uma solução clara.
O que estou procurando é copiar o diretório de teste no diretório test2 sem precisar digitá-lo novamente. Algo como
onde
d:\test2\test
não existe antes da cópia, mas existe depois. Isso economizaria no teste de digitação incorreta pela segunda vez no caminho de destino. O comando acima copiará todos os arquivos e diretórios para o test2, mas não criará o diretório de teste.Tão longe
é realmente a única maneira que encontrei para realizar esse trabalho. Novamente, se você tiver problemas de digitação, não há garantia de que os diretórios de origem e destino correspondam.
Uma alternativa para corrigir isso é
Isso define o diretório de destino na
mydir
variável e depois usa essa variável no caminho de origem e de destino. Se você digitar a variável incorretamente, receberá um erro ou o diretório de destino provavelmente terá%
no início e no final.É mais longo para digitar, mas menos chance de obter os nomes errados. Eles serão visíveis.
fonte
xcopy /ievy c:\test d:\test2\test
para manter a estrutura da árvore de diretórios eset mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
apenas 1 & será suficiente, pois o resultado da definição de um valor sempre é bem-sucedido.Onde
SWITCHES
pode estar:Para copiar toda a estrutura de diretórios:
/hiev
Para substituir arquivos no destino (caso a pasta de destino já exista):
/hievry
Para substituir e também copiar com o atributo ACL +:
/hievxok
Mais adequado ao seu caso:
xcopy /hievry C:\test C:\test2\test
fonte
Eu tive uma situação semelhante em que precisei copiar várias pastas, incluindo os nomes das pastas para um local de destino, e esperava que essa pergunta marcada como respondida ajudasse, mas realmente não.
Primeiramente, há definitivamente ocasiões em que alguém precisaria dessa capacidade e eu encontrei uma quando tive que copiar pastas de C: \ Windows \ Assembly \ GAC_MSIL. O Windows Explorer se recusa a mostrar esta pasta, então você precisa usar um prompt de comando.
Se você estiver familiarizado com a pasta GAC, saberá que os nomes das pastas não são triviais e fáceis de errar se digitar incorretamente.
Portanto, criar o diretório antecipadamente não é realmente uma opção - a menos que você use um script - que acabei usando, pois essa era a única solução real.
Primeiro despeje as pastas que você deseja copiar para um arquivo temporário, isso geralmente é baseado em algum padrão, por exemplo
Em seguida, faça um loop sobre as entradas no dump e copie para o destino. O Xcopy cuidará da criação de uma pasta se você encerrar o argumento de destino com uma barra invertida (\)
Coloque esses dois comandos em um arquivo em lotes e execute.
Agora, se apenas o xcopy ou o robocopy tem isso embutido.
fonte
Unidade de origem XCOPY: Unidade de destino: / S / E
fonte
/S /E
bandeiras)Cheguei a uma resposta alternativa funcional para sua pergunta.
Primeiramente, usando
FORFILES
com o/S
parâmetro, confere que todos os subdiretóriosC:\test
serão alcançados.Em segundo lugar, com o
/C
parâmetro, é possível iniciar uma cadeia de comandos com variáveis nativas, o que possibilita criar os diretórios idênticos no destino e, em seguida, copiar os arquivos para dentro deles, usando duas estruturas condicionais.A primeira estrutura condicional
@isdir==TRUE
(certifique-se de usar letras maiúsculas), permite obter diretórios apenas da fonte e, em seguida, criá-los no destino eMKDIR [path]\@relpath
no final.Finalmente, o segundo garante que ele esteja trabalhando apenas com arquivos
@isdir==FALSE
e, em seguida, o comando COPY simplesmente faz o trabalho, obtendo todos os arquivos alcançados pelo comando FORFILES, definindo[path]@relpath
como destino, para copiar os arquivos para dentro dos diretórios recém-criados.Espero que ajude todos por aqui.
fonte
Isso fará isso a partir da GUI, não sei como eles fazem isso.
"... pequeno programa permitirá que você selecione o" do diretório "e" no diretório ", e ele continuará copiando SOMENTE a estrutura do diretório."
http://www.rjlsoftware.com/software/utility/treecopy/
fonte