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


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

if exist "bindevelopmentwhee.config.example"
  if not exist "TestConnectionExternalbinDebugwhee.config"
    xcopy "bindevelopmentwhee.config.example"
          "TestConnectionExternalbinDebugwhee.config"

Он каждый раз подсказывает мне следующее:

делает TestConnectionExternalbinDebugwhee.config Укажите имя файла или имя каталога на цели (F = file, D = каталог)?

Я хочу подавить это приглашение; ответ всегда F.

19 358

19 ответов:

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

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

Я использую

echo f | xcopy /f /y srcfile destfile

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

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

например:

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

создать копию файла "подхлестывают.конфиг.пример " в целевом каталоге без запроса файла или каталога.

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

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

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

xcopy " bin\development\whee.конфиг.пример" "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config*"

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

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

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

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

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

заняло у меня некоторое время, но все это занимает RTFM.

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

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

Это из законопроектов, ответ.

просто быть понятным для других.

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

xcopy "C:\Data\Images13e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:\Target Data\Images13e4a707-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 "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.

У меня была аналогичная проблема, и 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

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

например, скопируйте "bin\development\whee.конфиг.образец" "TestConnectionExternal\bin\Debug\whee.конфигурация"

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

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

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

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

C:

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

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

Рен "КС.htm "" Христос-наша-Пасха.htm"

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

ren " bin\development\whee.конфиг.пример" подхлестывают.конфигурации

xcopy/R / Y "bin\development\whee.конфиг" "TestConnectionExternal\bin\Debug\"

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

xcopy /f / y "bin\development\example.исполняемый" "TestConnectionExternal\bin\Debug\NewName.exe*"

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

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

Как вариант

RoboForm исходный файл DEST для файлов RoboForm SOURCE DEST для папок

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