Batch / BBE om map en inhoud tegelijk te kopiëren

Ik schrijf een batchscript met een kopie. Ik wil het script om een ​​volledige map te kopiëren. Wanneer ik een enkel bestand wil kopiëren, doe ik dit

copy %~dp0file.txt file.txt 

Als ik een map met deze structuur heb, is er een opdracht om deze volledige map met zijn inhoud tegelijk te kopiëren tijdens het behoud van de exacte structuur.

mainfolder/
  file1.txt
  file2.txt
  insidefolder/
     file3.txt
     file4.txt 
     file5.txt

Antwoord 1, Autoriteit 100%

Als u xcopyhebt, kunt u de /Eparamarissen gebruiken, die directories en subdirectories en de bestanden binnenkrijgen, inclusief het handhaven van de directorystructuur voor lege mappen

xcopy [source] [destination] /E

Antwoord 2, Autoriteit 49%

de oude manier:

xcopy [source] [destination] /E

xcopy is verouderd . Robocopy vervangt Xcopy. Het wordt geleverd met Windows 8, 8.1 en 10.

robocopy [source] [destination] /E

Robocopy heeft verschillende voordelen:

  • Kopieerpaden van meer dan 259 tekens
  • Multithreaded kopiëren

meer details hier .


Antwoord 3, Autoriteit 10%

Ik vermoed dat de xcopyopdracht is de Magic Bullet waarnaar u op zoek bent.

Het kan bestanden, mappen en zelfs hele schijven kopiëren tijdens het behoud van de originele maphiërarchie. Er zijn ook een handvol extra opties beschikbaar, in vergelijking met de basis copy-opdracht.

Bekijk hier de documentatie.

Als uw batchbestand alleen op Windows Vista of hoger hoeft te draaien, kunt u robocopyin plaats daarvan, wat een nog krachtiger hulpmiddel is dan xcopy, en nu is ingebouwd in het besturingssysteem. De documentatie is hierbeschikbaar.


Antwoord 4

Ik was geïnteresseerd in het origineel
vraag hier en gerelateerde.

Voor een antwoord heb ik deze week wat gedaan
experimenten met XCOPY.

Hier om de oorspronkelijke vraag te beantwoorden:
Ik post de resultaten van mijn experimenten.

Ik deed de experimenten op Windows 7 64 bit
Professionele SP1 met de kopie van XCOPY
die bij het besturingssysteem is geleverd.

Voor de experimenten heb ik wat code geschreven in
de scripttaal Open Object Rexx
en de editor macrotaal Kexx met
de teksteditor KEdit.

XCOPY is aangeroepen vanuit de Rexx-code. De
Kexx-code heeft de schermuitvoer van . bewerkt
XCOPY om zich te concentreren op de cruciale resultaten.

De experimenten hadden allemaal te maken met het gebruik van
XCOPY om één map met meerdere te kopiëren
bestanden en submappen.

De experimenten bestonden uit 10 cases.
Elk geval paste de argumenten aan naar XCOPY
en belde een keer XCOPY. Alle 10 gevallen waren:
proberen hetzelfde te kopiëren
operatie.

Dit zijn de belangrijkste resultaten:

(1) Van de 10 gevallen deden er maar drie dat
kopiëren. De andere 7 gevallen meteen,
gewoon van het verwerken van de argumenten tot
XCOPY, gaf foutmeldingen, bijv.

Invalid path
Access denied

zonder bestanden gekopieerd.

Van de drie gevallen die wel kopieerden, waren ze
allemaal deden hetzelfde kopiëren, dat wil zeggen, gaf
dezelfde resultaten.

(2) Als u een map x en allen wilt kopiëren
de bestanden en directory’s in directory X,
In de hiërarchische bestandssysteemboom
geroot in map x, blijkbaar
Xcopy – en dit lijkt veel van
de oorspronkelijke vraag – zal het gewoon niet doen
dat.

Eén gevolg is dat als u xcopy gebruikt
kopieer x en de inhoud ervan, dan
Kan de inhoud kopiëren, maar kan het niet kopiëren
map x zelf; Dus verlies de
Tijd-datumstempel in de directory X, het is
Archief bit, gegevens over eigendom,
attributen, enz.

Natuurlijk als gids x een subdirectory is
van map y, een xcopy van y zal kopiëren
alle inhoud van de directory y met
directory X. Kan op deze manier een kopie krijgen
van map X. Echter, de kopie van
map x heeft zijn tijdsdatumstempel
van de tijd van de run van Xcopy en niet
de tijdsdatum van het origineel
map x.

Deze verandering in tijdsdatumstempels kan zijn
ongemakkelijk voor een kopie van een map met een
Veel gedownloade webpagina’s: de HTML
Bestand van de webpagina zal zijn
Originele tijd-datumstempel, maar de
Corresponderende subdirectory voor gebruikte bestanden
door het HTML-bestand heeft de tijddatum
Stempel van de run van Xcopy. Dus wanneer
Het sorteren van de kopie op tijd datumstempels, alles
de subdirectories, de HTML-bestanden en de
Corresponderende subdirectories, b.v.,

x.htm
x_files

kan in het soort ver uit elkaar liggen
tijddatum.

Hiërarchische bestandssystemen gaan ver terug,
IIRC aan multics bij MIT in 1969, en sindsdien
dan hebben veel mensen de
twee gevallen, gezien een map x, (i) kopiëren
directory x en al zijn inhoud en (ii)
kopieer alle inhoud van x maar niet
map x zelf. Nou, als alleen
De experimenten, Xcopy doet alleen (ii).

Zo zijn de resultaten van de 10 gevallen hieronder.
Voor elk geval, in de resultaten de eerste
drie regels hebben de eerste drie argumenten
naar XCOPY. Dus de eerste regel heeft de boom
naam van de te kopiëren map, de
‘bron’; de tweede regel heeft de boom
naam van de map om de kopieën te krijgen,
de ‘bestemming’, en de derde regel heeft
de opties voor XCOPY. De resterende 1-2
lijnen hebben de resultaten van de run of
XCOPY.

Een belangrijk punt over de opties is dat:
opties /X en /O resulteren in resultaat

Access denied

Om dit te zien, vergelijk case 8 met de andere
gevallen die hetzelfde waren, hadden geen /X
en /O, maar wel gekopieerd.

Deze experimenten hebben me beter gemaakt
begrijp XCOPY en draag een antwoord bij
op de oorspronkelijke vraag.

======= case 1 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_1\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 2 ==================
"k:\software\dir_time-date\*"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_2\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 3 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_3\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 4 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_4\"
options = /E /F /G /H /K /R /V /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 5 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_5\"
options = /E /F /G /H /K /O /R /S /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 6 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_6\"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 7 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_7"
options = /E /F /G /H /I /K /R /S /Y
Result:  20 File(s) copied
======= case 8 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_8"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 9 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_9"
options = /I /S
Result:  20 File(s) copied
======= case 10 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_10"
options = /E /I /S
Result:  20 File(s) copied

Antwoord 5

Voor de map te kopiëren kunt u gebruik maken

robocopy C:\Source D:\Destination /E

Voor het kopiëren van bestanden

copy D:\Sourcefile.txt D:\backup\Destinationfile.txt /Y 

Delete file in sommige folder laatste modify datum meer dan een dag

forfiles -p "D:\FolderPath" -s -m *.[Filetype eg-->.txt] -d -[Numberof dates] -c "cmd /c del @PATH"

En u kunt taak shedule in windows deze taak automatisch uit te voeren in bepaalde tijd.

Other episodes