Это кажется довольно простым, и, может быть, я просто пропускаю правильный флаг , но как мне в одной команде скопировать файл из одного каталога в другой и переименовать его в целевой каталог? Вот моя команда:
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
.
command-line
command-prompt
xcopy
Сара Весселс
источник
источник
cp
b ** t для копирования файлов / каталогов вокруг!Ответы:
Не используйте
xcopy
, используйтеcopy
вместо этого, у него нет этой проблемы.xcopy
обычно используется при выполнении рекурсивных копий нескольких файлов / папок или когда вам нужны функции проверки / запроса, которые он предлагает. Для отдельных файлов,copy
команда работает просто отлично.источник
copy
не будет копировать файл, если вся структура каталогов для места назначения еще не существует.xcopy
автоматически создаст все необходимые каталоги.xcopy
а не толькоcopy
,я использую
обойти это.
источник
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
для меня. Вы великолепныДругим вариантом является использование подстановочного знака назначения. Обратите внимание, что это работает только в том случае, если имена файлов источника и назначения будут одинаковыми, поэтому, хотя это не решает конкретный пример OP, я подумал, что стоит поделиться.
Например:
создаст копию файла «whee.config.example» в целевом каталоге без запроса файла или каталога.
Обновление : как упомянуто @chapluck:
Вы можете изменить
"* "
на"[newFileName].*"
. Сохраняется расширение файла, но можно переименовывать. Или более хакерский:"[newFileName].[newExt]*"
поменять расширениеисточник
В XCOPY есть какая-то недокументированная особенность. ты можешь использовать:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
Я проверил это только сегодня. :-)
источник
whee.config.example
к папке назначения, потому чтоwhee.config*
совпадаетwhee.config.example
.b.txtxt
, а затем запустил команду,xcopy a.txt b.txt* /F /Y
и файлa.txt
был скопированb.txt
, как и ожидалось. Кроме того, при использовании/F /Y
переключателей фактическая копия отображается на экране точно так, как ожидалось.Просто зайдите на http://technet.microsoft.com/en-us/library/bb491035.aspx
Вот что такое ОСНОВНАЯ ПРОБЛЕМА "... Если в пункте назначения нет существующего каталога и он не заканчивается обратной косой чертой (), появляется следующее сообщение: ...
Указывает ли пункт назначения имя файла или имя каталога на цели (F = файл, D = каталог)?
Вы можете подавить это сообщение, используя параметр командной строки / i, который заставляет xcopy предполагать, что местом назначения является каталог, если источником является более одного файла или каталога.
Это заняло у меня некоторое время, но все, что нужно, это RTFM.
источник
Таким образом, есть простое решение для этого. Это по общему признанию неловко, но это работает. xcopy не предложит узнать, является ли место назначения каталогом или файлом, ЕСЛИ новый файл (имя файла) уже существует. Если вы предшествуете своей команде xcopy простым эхом новому имени файла, он перезапишет пустой файл. пример
источник
Это из вексельного ответа.
Просто чтобы быть действительно понятным для других.
Если вы копируете ОДИН файл из одного места в другое И хотите, чтобы была создана полная структура каталогов, используйте следующую команду:
Да, поставьте обратную косую черту в конце имени файла, и она НЕ спросит вас, является ли это файл или каталог. Поскольку в источнике только один файл, он будет считать, что это файл.
источник
dir "C:\Target Data\\Images\2013\08\12"
09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
источник
У меня была похожая проблема, и robocopy и xcopy не помогли, так как я хотел скрыть комментарии и использовать другое имя файла назначения. я нашел
работает в соответствии с моими требованиями.
источник
Вернуться к исходному вопросу:
может быть сделано с помощью двух команд, например:
Просто добавив «\ ..» к пути файла назначения, создается каталог назначения, если он еще не существует. В этом случае
который является родительским каталогом несуществующего каталога
По крайней мере для WIN7 mkdir не волнует, если каталог
действительно существует.
источник
XCOPY с * в конце цели для копирования файлов, независимо от того, существуют они или нет в месте назначения. XCOPY с \ в конце цели для копирования папок и содержимого, независимо от того, существуют они или нет в месте назначения.
альтернативно
RoboForm SOURCE DEST FILE для файлов RoboForm SOURCE DEST для файлов
источник
Я предлагаю
robocopy
вместоcopy
илиxcopy
. Используется в качестве команды или в графическом интерфейсе на клиентах или серверах. Допускает сетевые паузы, и вы можете игнорировать атрибуты файла при копировании копии по атрибутам файла. Да, и он поддерживает многоядерные машины, поэтому файлы копируются гораздо быстрее, параллельно, а не последовательно.robocopy
можно найти на MS TechNet.источник
Правильно, если вы хотите скопировать только файл и изменить его имя в месте назначения:
И это будет работать нормально
источник
Для дублирования больших файлов хорошим выбором будет xopy с ключом / J. В этом случае просто передайте F для файла или D для каталога. Кроме того, вы можете сохранить задания в массиве для будущих ссылок. Например:
Спасибо Чанду с небольшими изменениями: https://stackoverflow.com/users/3705330/chand
источник
Используйте copy вместо xcopy при копировании файлов.
например, скопируйте «bin \ development \ whee.config.example» «TestConnectionExternal \ bin \ Debug \ whee.config»
источник
copy /Y source destination
чтобы передать подтверждение перезаписи.Поскольку вы на самом деле не меняете имя файла, вы можете извлечь его из пункта назначения, и вопросов не будет.
Этот подход хорошо работает, когда каталог назначения гарантированно существует, и когда источником может быть файл или каталог.
источник
Debug
каталог, вероятно, гарантированно существует.Обойдите, используйте ReName ... и назовите его загадочным именем, затем переименуйте его на собственное имя
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 \"
источник
ren "bin\development\whee.config" whee.config.example
Поместите звездочку (*) в конце пути назначения, чтобы пропустить спор D и F.
Пример:
источник
Xxxxxxxxxxxx указывает имя файла или имя каталога на цели
источник
Я столкнулся с той же проблемой при попытке скопировать файл с новым именем, только если файл не существует в месте назначения или существует (с новым именем), но старше. Решение состоит в том, чтобы добавить
*
символ в конце имени файла назначения. Пример:источник
Вы не можете указать, что это всегда файл. Если вам не нужны другие функции xcopy, почему бы не использовать обычные
copy
?источник
copy
, что , будучи внутренней командой, не устанавливает ErrorLevel. Если вы хотите иметь возможность влиять на путь пакетного файла, если происходит ошибка копирования, вам нужно использоватьXCOPY
.