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

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

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

я использую

 echo f | xcopy /f /y srcfile destfile 

обойти его.

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

Например:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это из ответа Bills.

Просто быть по-настоящему понятным для других.

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

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

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

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

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

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

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

xcopy src dest /I

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

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

 type filename.txt > destfolder\destfilename.txt 

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

Для дублирования больших файлов 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

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

например, копия «bin \ development \ whee.config.example» «TestConnectionExternal \ bin \ Debug \ whee.config”

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

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

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

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

C:

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”

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

ren “bin \ development \ whee.config.example” whee.config

xcopy / R / Y “bin \ development \ whee.config” “TestConnectionExternal \ bin \ Debug \”

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

xcopy / f / y “bin \ development \ example.exe” “TestConnectionExternal \ bin \ Debug \ NewName.exe *”

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

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

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

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

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

  • Как преобразовать аргумент командной строки в int?
  • Как использовать символы Unicode в командной строке Windows?
  • В чем разница между «$ @» и «$ *» в Bash?
  • Удалить последнюю строку из файла в Bash
  • отправлять / отправлять xml-файл с помощью командной строки curl
  • Команда Maven, чтобы определить, какой файл settings.xml использует Maven
  • Как анализировать несколько вложенных подкоманд с помощью python argparse?
  • Как запустить mvim (MacVim) из терминала?
  • Как выполнить несколько операторов в анонимной функции MATLAB?
  • Постройте несколько проектов CDT C ++ из командной строки
  • Аргументы ввода и командной строки пользователя
  • Давайте будем гением компьютера.