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?

SCM
fonte

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

eHussain
fonte
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
mghicks
fonte
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\

ghiboz
fonte
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

Kingzel
fonte
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)
Jordânia
fonte
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
Akash Dahiwelkar
fonte
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 \

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

É assim que se faz! Simples, certo?

hampusma
fonte
-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.

TheKirkwoods
fonte
-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
Vaibhav Veralkar
fonte
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%"
Vinod Amarathunga
fonte