Командный файл XCopy Command - PullRequest
       13

Командный файл XCopy Command

1 голос
/ 07 декабря 2009

У меня есть пакетный файл, который просматривает содержимое текстового файла и копирует определенный файл с помощью команды xcopy.

вот фрагмент.

for /f %%a in (FilesToCopy.txt) do (
xcopy ..\..\Common\%%a Common\%%a /i /d /c /v /s /y /f 
xcopy Common\%%a ..\..\Common\%%a /i /d /C /v /s /y /f 
)

%% a содержит такие значения, как Images \ image1.jpg Images \ image2.jpg

поэтому при выполнении xcopy это будет выглядеть как

xcopy ..\..\Common\Images\image1.jpg Common\Images\image1.jpg /i /d /c /v /s /y

после выполнения будет выдано это сообщение

Does Common\Images\image1.png specify a file name
or directory name on the target
(F = file, D = directory)?

похоже, что команда / i не работает или я что-то здесь упускаю для подавления сообщения выше.

Ответы [ 2 ]

5 голосов
/ 07 декабря 2009

Ну, вы пропустили второе утверждение, которое дает справка о /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 символов.

1 голос
/ 07 декабря 2009

Пункт назначения должен быть путем, тогда он не будет спрашивать:

xcopy ..\..\Common\Images\image1.jpg Common\Images\ /i /d /c /v /s /y

В вашем случае вы можете использовать извлечение пути с% ~ p на месте назначения, так как вы можете сохранить это:

xcopy ..\..\Common\%%a Common\%%~pa /i /d /c /v /s /y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...