xcopy file, переименовывает, подавляет сообщение «xxx указывает имя файла ...» - PullRequest
383 голосов
/ 11 июня 2010

Это кажется довольно простым, и, может быть, я просто пропускаю правильный флаг , но как мне в одной команде скопировать файл из одного каталога в другой и переименовать его в каталоге назначения? Вот моя команда:

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

Каждый раз мне предлагается следующее:

Указывает ли TestConnectionExternal \ bin \ Debug \ whee.config имя файла или имя каталога на цели (F = файл, D = каталог)?

Я хочу отключить эту подсказку; ответ всегда F.

Ответы [ 19 ]

615 голосов
/ 11 июня 2010

Я использую

echo f | xcopy /f /y srcfile destfile

чтобы обойти это.

209 голосов
/ 11 июня 2010

Не используйте xcopy, используйте copy вместо этого, у него нет этой проблемы.

xcopy обычно используется при выполнении рекурсивных копий нескольких файлов / папок или когдавам нужны функции проверки / подсказки, которые он предлагает.Для отдельных копий файлов команда copy прекрасно работает.

166 голосов
/ 09 февраля 2013

Другим вариантом является использование подстановочного знака назначения.Обратите внимание, что это работает только в том случае, если имена файлов источника и назначения будут одинаковыми, поэтому, хотя это не решает конкретный пример OP, я подумал, что стоит поделиться им.

создаст копию файла «whee.config.example» в целевом каталоге без запроса файла или каталога.

Обновление : Как уже упоминалось @chapluck:

Вы можете изменить "* " на "[newFileName].*".Сохраняется расширение файла, но можно переименовывать.Или более хакерский: "[newFileName].[newExt]*" изменить расширение

88 голосов
/ 25 сентября 2014

В XCOPY есть какая-то недокументированная функция.Вы можете использовать:

xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"

Я тестировал это только сегодня,: -)

70 голосов
/ 09 августа 2013

Просто перейдите к http://technet.microsoft.com/en-us/library/bb491035.aspx

Вот что такое ОСНОВНОЙ ПРОБЛЕМА "... Если пункт назначения не содержит существующий каталог и не заканчивается обратной косой чертой () появляется следующее сообщение: ...

Указывает ли пункт назначения имя файла или имя каталога на целевом объекте (F = файл, D = каталог)?

Вы можете подавить это сообщение, используя параметр командной строки / i, который заставляет xcopy предполагать, что местом назначения является каталог, если источником является более одного файла или каталога.

Потребовалось время, новсе, что нужно, это RTFM.

27 голосов
/ 10 октября 2012

Итак, есть простое решение для этого.Это по общему признанию неловко, но это работает.xcopy не предложит выяснить, является ли место назначения каталогом или файлом, ЕСЛИ новый файл (имя файла) уже существует.Если вы предшествуете своей команде xcopy простым эхом для нового имени файла, она перезапишет пустой файл.Пример

echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y
6 голосов
/ 20 августа 2013

Это ответ Билла.

Просто чтобы быть действительно понятным для других.

Если вы копируете файл ONE из одного места в другое И и хотите создать полную структуру каталогов, используйте следующую команду:

xcopy "C:\Data\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:\Target Data\\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg\" 

Да, поставьте обратную косую черту в конце имени файла и НЕ будет спрашивать вас, является ли это файл или каталог. Поскольку в источнике есть только ОДИН файл, он будет считать, что этофайл.

2 голосов
/ 22 июля 2013

xcopy src dest /I

REM This assumes dest is a folder and will create it, if it doesnt exists

2 голосов
/ 24 января 2018

XCOPY с * в конце цели для копирования файлов, независимо от того, существуют они или нет, в целевой XCOPY с \ в конце цели для копирования папок и содержимого, независимо от того, существуют они или нет в месте назначения

В качестве альтернативы

RoboForm SOURCE DEST FILE для файлов RoboForm SOURCE DEST для папок

2 голосов
/ 11 ноября 2013

Вернуться к исходному вопросу:

 xcopy "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"

можно сделать двумя командами, например:

mkdir "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
xcopy "bin\development\whee.config.example" "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

Просто добавив «\ ..» к пути к файлу назначенияцелевой каталог создается, если он еще не существует.В этом случае

"c:\mybackup\TestConnectionExternal\bin\Debug\"

, который является родительским каталогом несуществующего каталога

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."

По крайней мере для WIN7 mkdir все равно, если каталог

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

действительно существует.

...