c ++ - Flytning af filer til en anden mappe

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et mareridt, der forsøger at kopiere filer fra flere mapper til en enkelt mappe.


Grundlæggende modtog jeg et datasæt med individuelle png-filer i individuelle mapper. Hvad jeg vil have, er en -mappe med alle png-filerne.


Grunden til, at jeg vil gøre dette med kode er, at datasættet har ca. 6000 mapper, så det er ikke praktisk at gøre det manuelt. Dette kan gøres med WinApi, da jeg ikke har brug for at lave denne krydsplatform. Jeg vil bare slå sammen de blodige mapper.


Hidtil har jeg formået at få stier til png-filerne alle gemt i en .txt, som er gemt på hver linje.


Eksempel:



  C:./Brugere/rudwi/Dokumenter/Visual\_Studio\_2017/Projekter/ExtractPhotos/ExtractPhotos/LFW-deepfunneled/Abbas\_Kiarostami/* png



Bare undrende er der en måde, jeg kan flytte fra stien ovenfor til en anden dir.


Løsningen givet af ANON, jeg tror, ​​var for Linux, men det er stort set det samme ved hjælp af xCopy fra kommandolinjen. I stedet skal du blot tilføje/s før kildestien for at inkludere alt i mappen. Håber det hjælper nogen.

Bedste reference


Det er nemmere at bare oprette en .bat-fil af kommandoerne for at lave en kopi, da du allerede har kildevejene.


I din yndlingsredaktør gør du følgende:



  1. Udfør 'cp' til alle dine linjer.

  2. Tilføj 'destinationssti' til alle dine linjer.

  3. Omdøb filen til .bat og kør den fra et cmd-vindue.



Du kan som eksempel ændre din linje over fra


C:/Users/rudwi/Documents/Visual\_Studio\_2017/Projects/ExtractPhotos/ExtractPhotos/lfw-deepfunneled/Abbas\_Kiarostami/*.png


til


cp C:/Users/rudwi/Documents/Visual\_Studio\_2017/Projects/ExtractPhotos/ExtractPhotos/lfw-deepfunneled/Abbas\_Kiarostami/*.png C:/DestinationPath

Andre referencer 1


et script til cmd kan se sådan ud:


set DESTDIR= C:DestinationPath
for /f "delims=" \%\%i in (filelist.txt) do (xcopy "\%\%i" \%DESTDIR\% /i /y )


Bemærk, skal du ikke glemme tilbageslag ved slutningen af ​​rejsen. Selvfølgelig kan scriptet parameteriseres:


set DESTDIR= \%2
for /f "delims=" \%\%i in (\%1) do (xcopy "\%\%i" \%DESTDIR\% /i /y )


sæt det i en mcopy.cmd fil, og det kan bruges som dette:


mcopy filelist.txt C: \ DestinationPath \

Andre referencer 2


Da jeg var nødt til at gøre noget sådan, og hvis jeg havde brug for det en gang hurtigt uden at skrive nogen scripts, gjorde jeg det:


indsamle alle png filer fra undergrupper:
dir /s /b *.png > copy.bat


Derefter ændrer du copy.bat ved at tilføje @echo off øverst og udfylde hvert filnavn med call:mycopy og derefter i bunden af ​​copy.bat tilføj:


goto:eof
:mycopy
copy \%1 C:mynewdir
exit /b 0


Ikke den bedste tilgang, men det er hurtigt at gøre uden virkelig at lave nogen scripting. Så når du kører den copy.bat, dømmer jeg output for fejl for dublet filnavne.