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 xcopy
hebt, kunt u de /E
paramarissen 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 xcopy
opdracht 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 robocopy
in 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.