Xcopy файл, переименовать, подавить сообщение "Does xxx указать имя файла..."

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

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.

Ответ 1

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

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

Ответ 2

Я использую

echo f | xcopy /f /y srcfile destfile

чтобы обойти его.

Ответ 3

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

Например:

xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*" 

создаст копию файла "whee.config.example" в каталоге назначения без запроса файла или каталога.

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

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

Ответ 4

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

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

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

Ответ 5

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

Здесь, что ГЛАВНЫЙ ВЫБОР "... Если Destination не содержит существующий каталог и не заканчивается обратным слэшем(), появляется следующее сообщение:...

Определяет ли назначение имя файла или имя каталога в целевом файле (F = файл, каталог D =)?

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

Взял меня немного, но все, что требуется, это RTFM.

Ответ 6

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

echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y

Ответ 7

Это из ответа на счет.

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

Если вы копируете файл ОДИН из одного места в другое И, вам нужна полная структура каталогов, используйте следующую команду:

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\" 

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

Ответ 8

xcopy src dest /I

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

Ответ 9

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

 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\"

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

Ответ 10

У меня была аналогичная проблема, и robocopy и xcopy не помогли, так как я хотел подавить комментарии и использовать другое имя файла назначения. Я нашел

type filename.txt > destfolder\destfilename.txt

работает согласно моим требованиям.

Ответ 11

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

альтернативно

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

Ответ 12

Я предлагаю robocopy вместо copy или xcopy. Используется как команда или в графическом интерфейсе на клиентах или серверах. Толерантность сетевых пауз и вы можете игнорировать атрибуты файлов при копировании копий по атрибутам файла. О, и он поддерживает многоядерные машины, поэтому файлы копируются намного быстрее "параллельно" друг с другом, а не последовательно. robocopy можно найти в MS TechNet.

Ответ 13

Правильная вещь, если вы хотите скопировать только файл и изменить его имя в пункте назначения:

xcopy/f/y "bin\development\example.exe" "TestConnectionExternal\Bin\Debug\NewName.exe *"

И он будет хорошо работать

Ответ 14

Для дублирования больших файлов xopy с/J-переключателем является хорошим выбором. В этом случае просто подключите файл F к файлу или D для каталога. Кроме того, вы можете сохранять задания в массиве для будущих ссылок. Например:

$MyScriptBlock = {
    Param ($SOURCE, $DESTINATION) 
    'F' | XCOPY $SOURCE $DESTINATION /J/Y 
    #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE
}
JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION
$JOBS | WAIT-JOB | REMOVE-JOB

Благодаря Chand с небольшими изменениями: https://stackoverflow.com/users/3705330/chand

Ответ 15

Используйте копию вместо xcopy при копировании файлов.

например. копия "bin\development\whee.config.example"          "TestConnectionExternal\Bin\Debug\whee.config"

Ответ 16

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

xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\  /Y

Этот подход хорошо работает, когда целевой каталог гарантированно существует, и когда источником может быть файл или каталог.

Ответ 17

Работайте вокруг, используйте ReName... и назовите его некоторым Cryptic Name, затем переименуйте его в свое собственное имя

С

CD "C:\Users\Public\Documents\Мои веб-сайты\AngelFire ~ Zoe \"

XCopy/D/I/V/Y "C:\Users\Public\Documents\Мои веб-сайты\HostGator ~ ZoeBeans\cop.htm"

Ren "cop.htm" "christ-our-passover.htm"

Ответ 18

xcopy позволит вам скопировать один файл в указанную папку, а просто не позволит вам определить имя получателя. Если вам требуется имя назначения, просто переименуйте его перед его копированием.

ren "bin\development\whee.config.example" whee.config

xcopy/R/Y "bin\development\whee.config"          "TestConnectionExternal\Bin\Debug \"

Ответ 19

Поместите звездочку (*) в конце пути назначения, чтобы пропустить спор D и F.

Пример:

xcopy "compressedOutput.xml" "../../Execute Scripts/APIAutomation/Libraries/rerunlastfailedbuild.xml*"

Ответ 20

Xxxxxxxxxxxx указывает имя файла или имя каталога на цели

(F = file, D = directory)? D

if a File : (echo F)
if a Directory (echo D)

Ответ 21

Вы не можете указать, что это всегда файл. Если вам не нужны xcopy другие функции, почему бы просто не использовать обычный copy?