copiando tutto il contenuto della cartella in un'altra cartella usando un file batch?


130

Ho una cartella in C:\Folder1

Voglio copiare tutto il contenuto di Folder1in un'altra posizione,D:\Folder2

Come posso fare questo usando un file batch?

Risposte:


163

xcopy.exeè la soluzione qui. È integrato in Windows.

xcopy /s c:\Folder1 d:\Folder2

Puoi trovare ulteriori opzioni su http://www.computerhope.com/xcopyhlp.htm


3
Ciao Hussain, ho provato il comando xcopy / sc: \ Folder1 d: \ Folder2 nel file batch, ma per me non funziona. puoi per favore guidarmi di più.
SCM,

Ciao, potresti non avere quella xcopy sulla tua macchina .. Tuttavia puoi scaricare il file batch da qui brothersoft.com/xcopy-177904.html
eHussain,

4
Se si desidera copiare anche sottodirectory vuote, è necessario utilizzare flag / s / e.
Ameba Spugnosa,

/ E non include automaticamente / s?
mghicks,

14
xcopyè obsoleto e genera un errore "Memoria insufficiente" quando il nome del file è più lungo di 254 caratteri. Utilizzare robocopyinvece: robocopy C:\Folder1 D:\Folder2 /COPYALL /E en.wikipedia.org/wiki/Robocopy
Marco Demaio

39

Se hai robocopy,

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

altrimenti,

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

1
Se questo copia il contenuto di Folder1, cosa fai se vuoi copiare la cartella stessa?
Kyle Delaney,

2
@KyleDelaney include il nome della cartella sorgente nella destinazione, ad es. "Xcopy / e / v C: \ Folder1 D: \ Folder2 \ Folder1 \"
mghicks

1
Nota che RoboCopy usa \ come carattere di escape (CMD no) , se provi a passare un percorso tra virgolette con uno spazio e una barra finale come "C:\My Folder\"potresti ottenere una brutta sorpresa. Consiglio di leggere con molta attenzione quella pagina SS64. Per un viaggio completo nella tana del coniglio "cos'è un personaggio di escape in CMD", vedi Escaping Double Quotes in Batch Script .
jrh

21

se vuoi rimuovere il messaggio che dice se la destinazione è un file o una cartella devi solo aggiungere una barra:

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


16

Vedo molte risposte che suggeriscono l'uso di xcopy. Ma questo non è necessario. Poiché la domanda menziona chiaramente che l'autore desidera che il CONTENUTO DELLA CARTELLA non sia la cartella stessa da copiare in questo caso, possiamo:

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

Questo è tutto ciò che xcopy può essere utilizzato se esiste una sottodirectory inC:\Folder1


1
Questo non funziona se la cartella in cui stai copiando non esiste ancora (credo) quindi potresti voler aggiungeremd D:\Folder2
Mark Deven,

2
Il mio copycomando (prompt dei comandi di Windows 10) mi dice che la sintassi non è corretta. Di seguito sarebbe la sintassi corretta:copy "C:\Folder1\*.*" "D:\Folder2"
j00hi

4

RoboCopy non ha funzionato per me e ci sono alcune buone soluzioni qui, ma nessuna ha spiegato gli switch XCopy e cosa fanno. Inoltre hai bisogno di virgolette nel caso in cui il tuo percorso contenga spazi.

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

Ecco la documentazione di Microsoft:

Documentazione 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

Sul mio PC, xcopy e robocopy necessitano anche del percorso, ovvero C: \ Windows \ System32 \ xcopy.exe

Ecco perché uso semplicemente "copia": copia / y .... \ Cartella1 \ File.txt .... \ Cartella2 \


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

Ecco come si fa! Semplice vero?


-1

Cordiali saluti ... se si utilizza TortoiseSVN e si desidera creare un semplice file batch per eseguire xcopy (o mirroring di directory) interi repository in una posizione "sicura" su base periodica, questo è il codice specifico che si potrebbe desiderare di utilizzare. Copia su directory / file nascosti, mantiene gli attributi di sola lettura e tutte le sottodirectory e, soprattutto, non richiede input. Assicurati di assegnare correttamente cartella1 (repository sicuro) e cartella2 (repository utilizzabile).

@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 questo è tutto gente!

Aggiungi alle attività pianificate e non guardare mai indietro.


-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
Una spiegazione del tuo codice non gioverà solo alla domanda di questa domanda, ma alle persone future che si imbatteranno in questo alla ricerca di una soluzione allo stesso problema.
Josh Burgess,

3
Hai diverse bandiere che contraddicono direttamente altre bandiere. /Scopia le directory e le sottodirectory tranne quelle vuote, mentre le /Edirectory e le sottodirectory copiate, comprese quelle vuote. /Qnon visualizza i nomi dei file durante la copia, mentre /Fvisualizza i nomi completi dei file di origine e destinazione durante la copia.
SomethingDark

-2

Ho scritto un file .bat per copiare e incollare il file in una cartella temporanea e renderlo zip e trasferirlo in un punto di montaggio smb, spero che questo possa aiutare,

    @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%"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.