XCOPY File, Rename, Suppress "делает xxx Укажите имя файла ..." Сообщение

StackOverflow https://stackoverflow.com/questions/3018289

Вопрос

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

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 = directory)?

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

Это было полезно?

Решение

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

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

Другие советы

я использую

echo f | xcopy /f /y srcfile destfile

обойти это.

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

Например:

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.

Вот что является главной проблемой «... если пункт назначения не содержит существующего каталога и не заканчивается обратной косой () появляется следующее сообщение: ...

Есть ли пункт назначения имени файла или имя каталога на цели (f = файл, d = directory)?

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

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

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

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

Это от ответа счетов.

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

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

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 src dest /I

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

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

type filename.txt > destfolder\destfilename.txt

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

Вернуться к первоначальному вопросу:

 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 мкдир не волнует, если каталог

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

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

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

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

RoboForm Source DED Файл для файлов RoboForm Source Dest для папок

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

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

xcopy / f / y "bin development example.exe" "TestConnectionExternal bin debug newname.exe *"

И это будет работать нормально

Для дублирования больших файлов XOPY с / j Switch - хороший выбор. В этом случае просто используйте 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

Благодаря Чуде с битовыми модификациями: https://stackoverflow.com/users/3705330/Чанс

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

Например, копия «Bin Development Whee.config.example» «TestConnectionExternal Bin Debug Whee.config»

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

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

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

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

C:

CD "C: Пользователи public Documents Мои веб-сайты engelfire ~ zoe "

Xcopy / d / i / v / y "C: Пользователи public Documents Мои веб-сайты Hostgator ~ zoebeans cop.htm"

REN "COP.HTM" "Христос-наш - passover.htm"

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

Рен "Bin Development whee.config.example" whee.config

xcopy / R / Y "Bin Development wee.config" "testconnectionexternal bin debug "

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

Пример:

xcopy "compressedOutput.xml" ../../execute Scripts / apiautomation / библиотеки / RerunlastfailedBuild.xml * "

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top