Come posso copiare ogni quarto file in una cartella in una nuova cartella?


5

Sto esportando un'animazione come file immagine PNG. Dalle 1199 sequenze di fotogrammi esportati, solo ogni quarto file contiene un fotogramma chiave mentre il resto dei file immagine sono duplicati esatti del precedente.

Come posso copiare solo il 4 ° file in una nuova cartella?

file-20000.png - Copy
file-20001.png - Duplicate of file-20000
file-20002.png - Duplicate of file-20000
file-20003.png - Duplicate of file-20000
file-20004.png - Copy
file-20005.png - Duplicate of file-20004
file-20006.png - Duplicate of file-20004
file-20007.png - Duplicate of file-20004
file-20008.png - Copy

Risposte:


4

Usare un FOR / L loop e impostare il inizio a 0, il passo a 4 e il fine a 1200 che è uno in più rispetto al 1199 sequenze di numeri di parti di nomi di file che è necessario solo per copiare il quarto file.

Questo itererà i numeri a partire da 0 andando da 0, 4, 8, .... 1196 contando per 4 e puoi aggiungere il valore iterato come una stringa concatenata all'interno di una porzione del nome di un file insieme a una maschera jolly e usarla con xcopy copiare ciascuno 4 ° file di conseguenza.


Script batch

Nota: Questa logica presuppone che i nomi dei file inizieranno sempre con "File-2" e terminano sempre con i numeri di sequenza appena prima del punto prima dell'estensione png (Cioè <SeqNum>.png ) .

@ECHO ON

SET SrcDir=C:\folder\src
SET DestDir=C:\folder\dest
SET fNamePart=file-2
SET ext=png

FOR /L %%a IN (0, 4, 1200) DO (
    ECHO F | XCOPY /Y /F "%SrcDir%\%fNamePart%*%%a.%ext%" "%DestDir%\"
    )

PAUSE
EXIT

Ulteriori risorse

  • FOR / L

    FOR /L %variable IN (start,step,end) DO command [command-parameters]
    
        The set is a sequence of numbers from start to end, by step amount.
        So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
        generate the sequence (5 4 3 2 1)
    
  • XCOPY


0

Se tutti i file che si desidera avere Copy nel loro nome, e tutti i file che non vuoi non hanno Copy nel loro nome, allora puoi usare *Copy*, come in

copy *Copy*  DestinationDirectory 
o usare *copy*, poiché Windows non fa distinzione tra maiuscole e minuscole. Se tutti i file che si desidera avere Copy alla fine dei loro nomi, Puoi usare *Copy invece (lasciando fuori il * alla fine). È possibile utilizzare i modelli di nome file in Esplora risorse digitando file:*copy* nella casella di ricerca.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.