Come copiare una struttura di directory senza copiare i file?
Ho una cartella con molte sottocartelle e file in esse. C'è un modo per copiare la struttura delle cartelle e sottocartelle senza copiare i file che contengono, usando cmd o powershell?
Ho una cartella con molte sottocartelle e file in esse. C'è un modo per copiare la struttura delle cartelle e sottocartelle senza copiare i file che contengono, usando cmd o powershell?
Se volete copiare anche le cartelle vuote.
xcopy C:\cartelle D:\cartelle /t /e
Sì. XCOPY
XCopy source {destination} /t
esempio
xcopy C:\Folders D:\Folders /t
ulteriori informazioni su xcopy possono essere trovate qui http://ss64.com/nt/xcopy.html
Anche se XCOPY funziona ancora, Windows Vista e successivi includono ROBOCOPY che ha più caratteristiche. La sintassi generale per copiare un albero di cartelle (incluse le cartelle vuote) senza i file è:
robocopy "A:\Source folder" "B:\Destination folder" /e /xf *
Metodo PowerShell che non richiede di copiare ogni file e poi cancellarlo:
Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}
O più brevemente:
copy .\source C:\path\to\copy -r -fi PSIsContainer
L'unico trucco interessante qui è il filtraggio sulla proprietà PSIsContainer
, che è vera per le directory ma non per i file.
Guarda 47folders app, gratis, comodo strumento per Windows, fa esattamente quello che ti serve attraverso una bella GUI.
WARNING: Former link http://47foldersapp.com/ ) now (Nov 2017) leads to advertisement for clothing. The last good Internet Archive copy is here . Software may still be available from freeware download sites such as this one .
Usa PowerShell per farlo usando. Fai una copia della cartella e poiRemove-Item -Path "C:\test\*.*" -recurse
Ho appena usato il freeware Miroirs, che molto semplicemente ha copiato solo le cartelle, non il contenuto (anche se è un'opzione). http://www.scanialabs.com/Products/Miroirs/Miroirs.aspx
Probabilmente c'è una soluzione migliore, ma io vedrei queste:
Copiare tutto, poi svuotare le cartelle con uno script.
Fare uno script che copierà tutto se non ha estensione. A meno che tu non abbia file senza estensione nelle cartelle, cosa che non dovresti fare, dovrebbe funzionare, perché, beh. Le cartelle non hanno estensioni. Qualcosa che assomiglierebbe a questo in pseudocodice:
open\directory($path);
while($file=get\directory\content) {
if(empty(get\file\extension($file))
copy\file_file($file,$destinazione);
}
}
close\directory;
per quanto ne so ci sono software di terze parti che possono fornire questa funzionalità se vuoi fare con il prompt dei comandi allora il comando copy è là fuori. digita help copy in cmd che fornisce dettagli su come copiare i file attraverso cmd. dopo aver copiato vai alla cartella attraverso cmd ed esegui il comando
del\*.\*
che cancella i file perché le cartelle non hanno . carattere