Copia di file con modifica del nome

Vi sono situazioni in cui può capitare di dover copiare dei file in altra cartella e contestualmente avere la necessità di modificare il nome di tali file, ad esempio aggiungendo un’estensione.

Sebbene vi siano vari approcci per gestire tale necessità, come ad esempio utilizzare uno script PowerShell, una soluzione semplice è quella di utilizzare il comando xcopy richiamandolo all’interno di un ciclo FOR.

Di seguito un script DOS che ricerca nella directory sorgente i file il cui nome iniziano per “Sample” e li copia nella directory destinazione aggiungendo ad ogni file l’estensione “.txt”

SET SourceDir=C:\Test\Source
SET DestinationDir=C:\Test\Destination

FOR %%f IN (%SourceDir%\Sample*) DO (
  echo F|xcopy %%f %DestinationDir%\%%~nxf.txt /y /d
)

Nel dettaglio il comando echo F|xcopy %%f %DestinationDir%\%%~nxf.txt /y /d copia nella directory destinazione solo i file nuovi o modificati senza richiedere la sovrascrittura e alla richiesta di specificare se la destinazione è un file o una directory tramite echo F viene risposto automaticamente che si tratta di un file.

La variabile %%~nxf rapresenta invece il nome file compreso di eventuale estensione estratto dal nome di file completo di percorso %%f.

Nel caso invece voglia copiare i file modificando l’estensione sarà possibile sostituire il comando di copia con il seguente:

echo F|xcopy %%f %DestinationDir%\%%~nf.txt /y /d