Ну, вы пропустили второе утверждение, которое дает справка о /I
:
/I If destination does not exist and copying more than one file,
assumes that destination must be a directory.
Вы копируете только один файл за раз, поэтому /I
не применяется.
Вероятно, вы можете решить эту проблему, введя F
в команду и подавив вывод:
echo F|xcopy ..\..\Common\%%a Common\%%a /i /d /c /v /s /y /f >nul
(Не будет работать на неанглийских версиях Windows; но, вероятно, это наименьшая из ваших проблем, учитывая, что пакет уже не удается для имен файлов с пробелами: -))
Вы можете попробовать создать один длинный список имен файлов для копирования:
setlocal enabledelayedexpansion enableextensions
set LIST=
for /f %%a in (FilesToCopy.txt) do set LIST=!LIST! "..\..\Common\%%a"
xcopy %LIST% Common /i /d /c /v /s /y /f
Для этого требуется два прохода над исходным файлом. И происходит сбой, когда список имен файлов становится длиннее 8190 символов.