copiando todo el contenido de la carpeta a otra carpeta usando un archivo por lotes?

130

Tengo una carpeta en C:\Folder1

Quiero copiar todo el contenido de Folder1otra ubicación,D:\Folder2

¿Cómo hago esto usando un archivo por lotes?

SCM
fuente

Respuestas:

163

xcopy.exeEs la solución aquí. Está integrado en Windows.

xcopy /s c:\Folder1 d:\Folder2

Puede encontrar más opciones en http://www.computerhope.com/xcopyhlp.htm

eHussain
fuente
3
Hola Hussain, probé el comando xcopy / sc: \ Folder1 d: \ Folder2 en el archivo por lotes, pero no me funciona. ¿Me puede guiar más?
SCM
Hola, es posible que no tengas esa copia en tu máquina. Sin embargo, puedes descargar el archivo por lotes desde aquí brothersoft.com/xcopy-177904.html
eHussain
44
Si desea copiar también subdirectorios vacíos, debe usar banderas / s / e.
Ameba Spugnosa
¿No incluye / e automáticamente / s?
mghicks
14
xcopyestá en desuso y genera un error de "Memoria insuficiente" cuando el nombre del archivo tiene más de 254 caracteres. Utilice en su robocopylugar: robocopy C:\Folder1 D:\Folder2 /COPYALL /E en.wikipedia.org/wiki/Robocopy
Marco Demaio
39

Si tienes robocopy,

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

de otra manera,

xcopy /e /v C:\Folder1 D:\Folder2
mghicks
fuente
1
Si eso copia el contenido de la Carpeta1, ¿qué hace si desea copiar la carpeta en sí?
Kyle Delaney
2
@KyleDelaney incluye el nombre de la carpeta de origen en el destino, por ejemplo, "xcopy / e / v C: \ Folder1 D: \ Folder2 \ Folder1 \"
mghicks
1
Tenga en cuenta que RoboCopy usa \ como un carácter de escape (CMD no lo hace) , si intenta pasar una ruta entre comillas con un espacio y una barra diagonal como "C:\My Folder\"puede obtener una desagradable sorpresa. Recomiendo leer esa página SS64 con mucho cuidado. Para un viaje completo por la madriguera del conejo "¿Qué es un personaje de escape en CMD?", Ver Escaping Double Quotes en Batch Script .
jrh
21

si desea eliminar el mensaje que le indica si el destino es un archivo o carpeta, simplemente agregue una barra diagonal:

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

ghiboz
fuente
16

Veo muchas respuestas que sugieren el uso de xcopy. Pero esto es innecesario. Como la pregunta menciona claramente que el autor quiere que EL CONTENIDO EN LA CARPETA no se copie la carpeta en este caso, podemos:

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

Todo xcopy eso se puede usar si existe algún subdirectorio enC:\Folder1

Kingzel
fuente
1
Esto no funciona si la carpeta a la que está copiando aún no existe (creo), por lo que es posible que desee agregarmd D:\Folder2
Mark Deven,
2
Mi copycomando (símbolo del sistema de Windows 10) me dice que la sintaxis es incorrecta. La siguiente sería la sintaxis correcta:copy "C:\Folder1\*.*" "D:\Folder2"
j00hi
4

RoboCopy no funcionó para mí, y hay algunas buenas soluciones aquí, pero ninguna explicó los interruptores XCopy y lo que hacen. También necesita comillas en caso de que su ruta tenga espacios.

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

Aquí está la documentación de Microsoft:

Documentación de 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án
fuente
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
fuente
2

En mi PC, xcopy y robocopy también necesitan la ruta a ellos, es decir, C: \ Windows \ System32 \ xcopy.exe

Es por eso que simplemente uso "copiar": copiar / y .... \ Carpeta1 \ Archivo.txt .... \ Carpeta2 \

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

¡Así es como se hace! Simple, ¿verdad?

hampusma
fuente
-1

FYI ... si usa TortoiseSVN y desea crear un archivo por lotes simple para copiar x (o espejo de directorio) repositorios completos en una ubicación "segura" de forma periódica, entonces este es el código específico que puede usar. Copia sobre los directorios / archivos ocultos, mantiene atributos de solo lectura, y todos los subdirectorios y lo mejor de todo, no solicita entradas. Solo asegúrese de asignar la carpeta1 (repositorio seguro) y la carpeta2 (repositorio utilizable) correctamente.

@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%

Y, eso es todo amigos!

Agregue a sus tareas programadas y nunca mire hacia atrás.

TheKirkwoods
fuente
-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
fuente
2
Una explicación de su código beneficiará no solo al autor de esta pregunta sino a las futuras personas que se topan con esto en busca de una solución al mismo problema.
Josh Burgess
3
Tienes varias banderas que contradicen directamente otras banderas. /Scopia directorios y subdirectorios excepto los vacíos, mientras que /Ecopia directorios y subdirectorios incluidos los vacíos. /Qno muestra los nombres de los archivos durante la copia, mientras que /Fmuestra los nombres completos de los archivos de origen y destino durante la copia.
Algo
-2

He escrito un archivo .bat para copiar y pegar el archivo en una carpeta temporal y hacer que se comprima y transfiera a un punto de montaje smb, espero que esto ayude,

    @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
fuente