@echo off
setlocal
set "src_folder=%USERPROFILE%\Documents\My Games\Tabletop Simulator\Mods"
set "dst_folder=%USERPROFILE%\Desktop\TTSmissing"
set "file_list=%USERPROFILE%\Desktop\list.txt"
set "ext_list=.gif .jpeg .jpg .mp4 .obj .pdf .png .webm"
if not exist "%dst_folder%" md "%dst_folder%"
for /d /r "%src_folder%\" %%A in (*) do (
pushd "%%~A" && (
for /f "usebackq delims=" %%B in ("%file_list%") do (
for %%C in (%ext_list%) do (
if exist "%%~B%%~C" (
echo copy /y "%%~B%%~C" "%dst_folder%\"
)
)
)
popd
)
)
Вы просто хотите скопировать файлы, чтобы copy
было проще в использовании, чем xcopy
. Код отобразит команду copy
, чтобы проверить, работает ли она так, как вы хотите. Если все выполнено, удалите echo
перед копией и снова запустите код, чтобы выполнить фактический процесс копирования.
A for /d /r
l oop будет рекурсивно повторять подкаталоги в %src_folder%
. pushd
изменит текущий каталог на каждый подкаталог, чтобы он мог работать относительно исходных файлов.
for /f
l oop будет повторять каждую строку с %file_list%
. Простой for
l oop будет повторять каждый из %ext_list%
. Если текущий « name.extension » существует, он будет скопирован в %dst_folder%
.
Если вы set
имен переменных в скрипте, обычно лучше использовать setlocal
для хранения переменных, определенных локально для скрипта.
Чтобы просмотреть справку по команде, используйте command /?
. Это будет работать для многих команд, используемых в коде.
Просмотр command /?
справки для copy
, for
, if
, setlocal
...