Como copiar um arquivo para um diretório no DOS e criar diretórios, se necessário?

32

Como posso copiar um arquivo usando comandos do DOS em uma estrutura de diretórios que talvez ainda não exista? Eu preciso ser capaz de forçar a criação do caminho do diretório para o local do arquivo de destino se esse local ainda não existir.

Por exemplo, já existe um arquivo.txt neste local:

C:\file.txt

E eu quero copiá-lo para

C:\example\new\path\to\copy\of\file\file.txt

mas neste momento

C:\example\

e todos os subdiretórios podem ou não existir.

Basicamente, estou procurando um comando "copiar e criar o caminho de destino, se necessário". O que você recomendaria é a melhor maneira de conseguir isso?

    
por nodmonkey 12.03.2010 / 18:07

3 respostas

26

Sim, isso é xcopy . Veja como ficará:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

Informações do XCOPY em

Você também pode querer olhar para ROBOCOPY , no kit de recursos XP e padrão no Vista, Windows 7 e Server 2008.

robocopy . c:\example\new\path\to\copy\of\file file.txt
    
por 12.03.2010 / 20:14
14

Eu tentei usar algo como:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

Mas me perguntaria se era um arquivo ou diretório. Desde que eu tinha que em um arquivo de lote com 40000 arquivos, seria impraticável. Esta solução apenas resolve parcialmente o meu problema: ela cria a estrutura de diretórios, mas requer interação do usuário. Eu encontrei a solução para o meu problema aqui:

link

Que é basicamente para adicionar um "*" no final do arquivo de destino:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*

EDIT: como apontado por @romkyns, pode ter resultados indesejados se você tiver arquivos que tenham o mesmo nome e alguma outra coisa (como 'file.txt.bak'). No mesmo tópico postado acima, outra solução que funciona é canalizar "echo f" para o seu comando:

echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

Onde você deve substituir o "f" por qualquer letra que seu sistema use para o arquivo, caso você o esteja usando em outro idioma.

    
por 14.08.2013 / 19:05
3

DOS, uau! De qualquer forma você usa o comando XCOPY .

    
por 12.03.2010 / 18:13