Secuencia de comandos por lotes para copiar archivos enumerados en un archivo de texto desde una carpeta y sus subcarpetas a una nueva ubicación

Me gustaría que un archivo por lotes copie todos los archivos enumerados en un archivo de texto de un destino a otro. El destino de origen puede tener múltiples subcarpetas y me gustaría que el lote busque el nombre del archivo en cada subcarpeta.

No quiero copiar las carpetas, solo los archivos.

Tengo el siguiente código pero no reconoce el (% file_list%)

set src=c:\files\sourcefolder\
set dst=c:\files\destinationfolder\
set file_list=c:\\files\files.txt

for /r "%src%" %%i in (%file_list%) do copy "%%i" "%dst%" >notcopied.txt

También quiero que el archivo escriba un archivo de texto llamado 'notcopied.txt' para poder ver si alguno de los archivos necesarios no estaba en la carpeta de origen. Quiero ese archivo escrito en la carpeta de destino.

Por ejemplo:

files.txt contains
File1.pdf
File2.pdf
File3.pdf

carpeta de origen contiene

File1.pdf
File2.pdf

notcopied.txt luego mostrará

File3.pdf

Gracias por cualquier idea.