2010-11-01 21:50:02 +0000 2010-11-01 21:50:02 +0000
72
72

Comando a riga di comando per copiare l'intera directory (inclusa la cartella della directory) in un'altra directory

usando la riga di comando, vorrei copiare una directory in un'altra. Per esempio c'è la directory C:/test e C:/test2.

Vorrei copiare C:/test in C:/test2 in modo che il risultato sarà C:/test2/test

Tutto quello che ho trovato finora copierà solo i file e le cartelle contenute in C:/test in C:/test2, ma tralascia la directory madre.

Risposte (10)

52
52
52
2010-11-01 21:52:22 +0000

Provare ad usare XCOPY con l'interruttore /E. Ulteriori informazioni qui .

Non ho avuto accesso a queste informazioni dal mio cervello da anni!

UPDATE

La documentazione dice che copia tutti i file e le sottodirectory dalla directory di origine (il che significa che la directory madre non viene creata), quindi si dovrebbe prima creare test in C:\test2 e poi usare XCOPY.

21
21
21
2015-11-22 21:23:05 +0000

Utilizzate ROBOCOPY se state creando script di backup. xcopy è stato deprecato e probabilmente sarà gradualmente fuori uso nel prossimo futuro. robocopy può fare tutto ciò che può fare xcopy. È anche più flessibile e affidabile. La creazione di script con robocopy li renderà a prova di futuro.


    1. Utilizzare robocopy per copiare facilmente le cartelle. Il comando robocopy sostituisce il comando xcopy. Può copiare rapidamente intere cartelle senza doversi preoccupare di definirne il contenuto. Ad esempio, per copiare tutto il contenuto della directory C:\ \strumenti nella nuova cartella D:\ \backup\strumenti, inserire quanto segue:
  1. Usare robocopy per copiare le cartelle. 3. Specchiate una directory. Il mirroring di una directory è ottimo per fare backup. L'opzione mirror di robocopy copia tutti i contenuti dalla sorgente alla destinazione. Cancellerà quindi tutto ciò che non esiste alla destinazione. Questo assicura che il vostro backup abbia solo le versioni più recenti dei vostri file. Per esempio, per fare il mirroring di C:\ \Users\My Documents su D:\ \ \ \ \ \ \ \ \ \ \ backup dei miei documenti, inserire quanto segue:[4]

    1. Abilitare il riavvio. Si potrebbe voler includere la possibilità di riavviare il processo nel caso in cui la connessione venga interrotta a metà copia.
  2. Abilitare il riavvio. Registrare il processo di copia. robocopy consente di creare un file di log. Questo può aiutare a individuare i problemi o a generare un archivio di ciò che è stato copiato.

8
8
8
2010-11-02 03:09:24 +0000

Raccomando robocopy su xcopy , perché ha molte più opzioni, compreso il mantenimento dei timestamp, che trovo essenziale.

Robocopy deve essere aggiunto su XP/2003, ma è standard da Vista in poi.

In realtà di solito uso xxcopy , ma la versione a 64 bit non è gratuita.

5
5
5
2012-06-22 06:40:49 +0000
XCOPY SourceDrive: DestinationDrive: /S /E

Ad esempio, se è necessario copiare i dati dell'unità E: sull'unità H: (disco rigido esterno) attraverso la riga di comando o dall'ambiente di comando xboot.

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
3
3
3
2016-04-29 18:29:05 +0000

Se la domanda originale è quella a cui cercavo una risposta, allora io, e ovviamente nessuno dei precedenti, ho trovato una soluzione chiara.

Quello che cerco è di copiare la directory di test nella directory di test2 senza doverla digitare di nuovo. Qualcosa come

xcopy /isvy c:\test d:\test2
``` ```
xcopy /isvy c:\test d:\test2\test

dove d:\test2\test non esiste prima della copia ma esiste dopo. In questo modo si risparmierebbe sul test di miss-typing la seconda volta nel percorso di destinazione. Il comando di cui sopra copierà tutti i file e tutte le directory in test2 ma non creerà la directory di test.

Finora

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%
``` &001 


è davvero l'unico modo che ho trovato per portare a termine questo lavoro. Anche in questo caso, se si hanno problemi di battitura, non c'è garanzia che le directory sorgente e destinazione corrispondano. 


Un'alternativa per correggere questo errore è 


&001 


Questo imposta la directory di destinazione nella variabile `mydir` e poi usa quella variabile sia nel percorso sorgente che in quello di destinazione. Se si digita la variabile sbagliata si otterrà un errore o la directory di destinazione avrà probabilmente `%` all'inizio e alla fine. 


È più lungo da digitare ma meno possibilità di ottenere i nomi sbagliati. Si noteranno.
1
1
1
2016-08-18 22:26:31 +0000
xcopy SWITCHES SOURCE DESTINATION

Dove SWITCHES può essere:

  • Per copiare l'intera struttura delle directory:

  • Per sovrascrivere i file nella destinazione (nel caso in cui la cartella di destinazione esista già):

  • Per sovrascrivere e anche copiare con ACL+Attributo:

** Più adatto al vostro caso:**

xcopy /hievry C:\test C:\test2\test

0
0
0
2017-07-24 12:06:12 +0000

Ho avuto una situazione simile in cui ho avuto bisogno di copiare un certo numero di cartelle, compresi i nomi delle cartelle, in un luogo di destinazione, e speravo che questa domanda con la risposta segnata sarebbe stata d'aiuto, ma in realtà non è così.

In primo luogo, ci sono sicuramente occasioni in cui si avrebbe avuto bisogno di questa capacità e mi sono imbattuto in una di queste quando ho dovuto copiare le cartelle da C:\Windows\Assembly\GAC_MSIL. Windows Explorer si rifiuta di mostrare questa cartella, quindi bisogna usare un prompt dei comandi.

Se avete familiarità con la cartella GAC, saprete che i nomi delle cartelle non sono banali e che è facile sbagliare se si digita male.

Quindi creare la cartella in anticipo non è davvero un'opzione - a meno che non si usi uno script - che ho finito per usare, perché questa era l'unica soluzione reale.

Primo dump delle cartelle che si desidera copiare in un file temporaneo, questo è di solito basato su qualche schema, ad esempio

dir /B policy* > Folders.txt

Poi fare un loop sulle voci nel dump e copiare a destinazione. Xcopy si occuperà di creare una cartella se si termina l'argomento di destinazione con una barra rovesciata ()

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

Mettere entrambi questi comandi in un file batch ed eseguire.

Ora se solo xcopy o robocopy ha questo integrato.

0
0
0
2018-12-07 17:07:00 +0000

Sono arrivato ad una risposta funzionale alternativa per la vostra domanda.

In primo luogo, utilizzando FORFILES con il parametro /S, si ottiene che ogni sottodirectory in C:\test sarà raggiunta.

In secondo luogo, con il parametro /C, è possibile avviare una catena di comandi con variabili native, che permette di creare le directory di identificazione a destinazione, e poi copiare i file al loro interno, utilizzando due strutture condizionali.

La prima struttura condizionale @isdir==TRUE (assicurarsi di usare le lettere maiuscole), permette di ottenere le directory solo dalla sorgente, per poi crearle al destino con MKDIR [path]\@relpath alla fine.

Infine, la seconda si assicura di lavorare con i file solo con @isdir==FALSE, e poi il comando COPY fa semplicemente il lavoro, ottenendo tutti i file raggiunti dal comando FORFILES, impostando [path]@relpath come destinazione, per copiare i file all'interno delle directory appena create.

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"
``` &001 

Speranza che aiuta tutti qui intorno.
0
0
0
2018-05-15 05:24:03 +0000

XCOPY SourceDrive: DestinationDrive: /S /E

-2
-2
-2
2010-11-02 05:24:21 +0000

Questo lo farà dalla GUI, non so come lo fanno.

“…piccolo programma vi permetterà di selezionare il "da directory” e “in directory”, e procederà a copiare SOLO la struttura delle directory.“ http://www.rjlsoftware.com/software/utility/treecopy/