copiar todo o conteúdo da pasta para outra pasta usando o arquivo em lotes?


130

Eu tenho uma pasta C:\Folder1

Quero copiar todo o conteúdo de Folder1para outro local,D:\Folder2

Como faço isso usando um arquivo em lotes?

Respostas:


163

xcopy.exeé a solução aqui. Está embutido no Windows.

xcopy /s c:\Folder1 d:\Folder2

Você pode encontrar mais opções em http://www.computerhope.com/xcopyhlp.htm


3
Olá Hussain, Eu tentei o comando xcopy / sc: \ Folder1 d: \ Folder2 no arquivo em lotes, mas não funciona para mim. você pode me guiar mais?
— SCM

Oi, Pode ser que você não ter que xcopy em sua máquina .. No entanto, você pode baixar arquivo de lote a partir daqui brothersoft.com/xcopy-177904.html
— eHussain

4
Se você deseja copiar também subdiretórios vazios, use sinalizadores / s / e.
— Ameba Spugnosa

/ E não inclui automaticamente / s?
— Mghicks #

14
xcopyfoi descontinuado e dispara um erro de 'Memória insuficiente' quando o nome do arquivo tiver mais de 254 caracteres. Use em robocopyvez disso: robocopy C:\Folder1 D:\Folder2 /COPYALL /E en.wikipedia.org/wiki/Robocopy
— Marco Demaio 5/16/16

39

Se você tem robocopy,

robocopy C:\Folder1 D:\Folder2 /COPYALL /E

de outra forma,

xcopy /e /v C:\Folder1 D:\Folder2

1
Se isso copiar o conteúdo da Pasta1, o que você fará se quiser copiar a própria pasta?
— Kyle Delaney

2
@KyleDelaney incluir o nome pasta de origem no destino, por exemplo, "xcopy / e / v C: \ Folder1 D: \ Folder2 \ Folder1 \"
— mghicks

1
Observe que o RoboCopy usa \ como um caractere de escape (o CMD não) , se você tentar passar por um caminho entre aspas com um espaço e uma barra final, como "C:\My Folder\"uma surpresa desagradável. Eu recomendo ler essa página SS64 com muito cuidado. Para uma viagem completa pela toca do coelho "o que é um caractere de escape no CMD", consulte Escapando aspas duplas no script em lote .
— JRH

21

se você deseja remover a mensagem que informa se o destino é um arquivo ou pasta, basta adicionar uma barra:

xcopy /s c:\Folder1 d:\Folder2\


16

Vejo muitas respostas sugerindo o uso do xcopy. Mas isso é desnecessário. Como a pergunta menciona claramente que o autor deseja que o CONTEÚDO DA PASTA não seja a própria pasta a ser copiada, neste caso, podemos:

copy "C:\Folder1" *.*  "D:\Folder2"

Isso tudo xcopy pode ser usado se existir algum subdiretório noC:\Folder1


1
Isso não funciona se a pasta que você está copiando ainda não existe (creio eu) para que você pode querer adicionarmd D:\Folder2
— Mark Deven

2
Meu copycomando (prompt de comando do Windows 10) informa que a sintaxe está incorreta. A seguinte seria a sintaxe correta:copy "C:\Folder1\*.*" "D:\Folder2"
— j00hi 1/08/19

4

O RoboCopy não funcionou para mim e existem algumas boas soluções aqui, mas nenhuma explicou os switches XCopy e o que eles fazem. Você também precisa de aspas, caso seu caminho tenha espaços.

xcopy / i / e "C: \ temp \ pasta 1" "C: \ temp \ pasta 2"

Aqui está a documentação da Microsoft:

Documentação do XCopy MS

/s: Specifies to include subdirectories. Excludes empty subdirectories
/e: Copies all subdirectories, even if they are empty
/i: specifies the destination is a folder (Otherwise it prompts you)

2
@echo off
::Ask
echo Your Source Path:
set INPUT1=
set /P INPUT1=Type input: %=%

echo Your Destination Path:
set INPUT2=
set /P INPUT2=Type input: %=%

xcopy %INPUT1% %INPUT2% /y /s

2

No meu PC, xcopy e robocopy também precisam do caminho para eles, ou seja, C: \ Windows \ System32 \ xcopy.exe

É por isso que eu simplesmente uso "copiar": copiar / y .... \ Pasta1 \ Arquivo.txt .... \ Pasta2 \


2
@echo off
xcopy /s C:\yourfile C:\anotherfile\

É assim que se faz! Simples, certo?


-1

Para sua informação ... se você usa o TortoiseSVN e deseja criar um arquivo em lotes simples para xcopy (ou espelho de diretório) repositórios inteiros em um local "seguro" periodicamente, esse é o código específico que você pode usar. Ele copia os diretórios / arquivos ocultos, mantém atributos somente leitura e todos os subdiretórios e o melhor de tudo, não solicita entrada. Apenas certifique-se de atribuir a pasta1 (repositório seguro) e a pasta2 (repositório utilizável) corretamente.

@echo off
echo "Setting variables..."
set folder1="Z:\Path\To\Backup\Repo\Directory"
set folder2="\\Path\To\Usable\Repo\Directory"
echo "Removing sandbox version..."
IF EXIST %folder1% (
    rmdir %folder1% /s /q
)
echo "Copying official repository into backup location..."
xcopy /e /i /v /h /k %folder2% %folder1%

E é isso aí pessoal!

Adicione às suas tarefas agendadas e nunca olhe para trás.


-2
@echo off
:: variables
echo Backing up file
set /P source=Enter source folder:
set /P destination=Enter Destination folder:
set xcopy=xcopy /S/E/V/Q/F/H/I/N
%xcopy% %source% %destination%
echo files will be copy press enter to proceed
pause

2
Uma explicação do seu código beneficiará não apenas quem faz a pergunta, mas também as pessoas que tropeçam nessa em busca de uma solução para o mesmo problema.
— Josh Burgess

3
Você tem vários sinalizadores que contradizem diretamente outros sinalizadores. /Scopia diretórios e subdiretórios, exceto os vazios, enquanto /Ecopia diretórios e subdiretórios, incluindo os vazios. /Qnão exibe os nomes dos arquivos durante a cópia, enquanto /Fexibe os nomes completos dos arquivos de origem e destino durante a cópia.
— SomethingDark

-2

Eu escrevi um arquivo .bat para copiar e colar o arquivo em uma pasta temporária e compactá-lo e transferi-lo para um ponto de montagem smb. Espero que isso ajude,

    @echo off
    if not exist "C:\Temp Backup\" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    xcopy /s/e/q "C:\Source" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
   Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\TELIUM"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_Log_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    NET USE \\IP\IPC$ /u:IP\username password
    ROBOCOPY "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"  "\\IP\Backup Folder" /z /MIR /unilog+:"C:\backup_log_%date:~-4,4%%date:~-10,2%%date:~-7,2%.log"
    NET USE \\172.20.10.103\IPC$ /D
    RMDIR /S /Q "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.