Проблема 1 - вы не используете опцию / R. Корневой каталог должен следовать параметру / R, а фильтр файлов должен появиться в предложении IN (). Прочтите справку FOR, набрав FOR /?
в командной строке.
Проблема 2 - ваш цикл будет прерван после первого GOTO, так что самое большее вы скопируете файл из одного каталога.
Проблема 3 - вам нужно пропустить каталог назначения, так как это подкаталог вашего корня.
Решение: вам понадобится 2 цикла, первый для обхода иерархии каталогов, начиная с корня, и 2-й цикл для перечисления файлов в одном каталоге. Вам нужно будет выполнить EXIT / B или GOTO из 2-го цикла после копирования 1-го файла, но это не будет работать, если 2-й цикл встроен в 1-й цикл - выход / goto будет выходить из самого внешнего цикла.
Чтобы обойти проблему, вам нужно, чтобы 1-й цикл вызывал подпрограмму, которая содержит 2-й цикл. Затем вы можете выйти / B из 2-го цикла, и он вернется в 1-й цикл и продолжит с того места, где остановился. Вызывайте подпрограмму только в том случае, если каталог не соответствует каталогу назначения.
@echo off
setlocal
set root="C:\Users\Liam\Desktop\Master"
set dest="C:\Users\Liam\Desktop\Master\Master-Copies\"
for /r /d %root% %%D in (*) do if "%%D" neq %dest% call :copyFirstFile "%%D"
pause
exit /b
:copyFirstFile
for %%F in ("%~1\*") do (
copy "%%F" %dest%
exit /b
)