cmd - Sådan udelades filtyper, når du kopierer rekursivt i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Windows-mappe X med undermapper x\_1 ... x\_100. Hver af underkatalogerne x\_i (i=1..100) indeholder en anden datafil (med forskellige navne) samt en ekstra fil kaldet 'annotation.txt', som jeg ikke har brug for.


Jeg ønsker at kopiere alle datafiler i x\_1 ... x\_100 til en ny mappe Y, med undtagelse af 'annotation.txt', fordi jeg ellers bliver bedt om 100 overskrivne spørgsmål.


Syntaxen jeg brugte til den rekursive kopi er:


for /r "C:<path to X> \%x in (*) do move "\%x" "C:<path to y>


Hvad skal jeg tilføje for at kunne kopiere alle filer undtagen 'annotation.txt' (eller mere generelt alle filer bortset fra dem der indeholder en vild kortstreng)?

Bedste reference


Det lyder som et job til robocopy. Jeg ved ikke, om du vil flytte mapper eller kun filer. Se robocopy /? for detaljer om brug af /MOV eller /MOVE. Parameteren /XF tillader udelukkelse af filer.


robocopy C:sourcedir C:destinationdir * /S /E /MOV /XF annotation.txt


Opdatering:


Hvad med at bruge PowerShell?


Get-ChildItem -Files -Recurse -Path 'C:sourcedir' -Exclude "annotation.txt" |
    ForEach-Ohject { Move-Item -Path $\_.FullName -Destination 'C:destinationdir' -WhatIf }