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 ответов
не используйте xcopy
используйте copy
вместо этого у него нет этой проблемы.
xcopy
обычно используется при выполнении рекурсивных копий нескольких файлов / папок или когда вам нужны функции проверки/запроса, которые он предлагает. Для одиночных копий файлов,copy
команда работает просто отлично.
другой вариант - использовать подстановочный знак назначения. Обратите внимание, что это работает только в том случае, если имена файлов источника и назначения будут одинаковыми, поэтому, хотя это не решает конкретный пример OP, я подумал, что стоит поделиться.
например:
xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*"
создаст копию файла " whee.конфиг.пример " в каталоге назначения без запроса файла или каталога.
обновление: как уже упоминалось @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
вот в чем главная проблема "... Если Destination не содержит существующего каталога и не заканчивается обратной косой чертой (), появится следующее сообщение: ...
указывает ли destination имя файла или имя каталога в целевой (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 "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
. Используется как команда или в GUI на клиентах или серверах. Толерантность к сетевым паузам, и вы можете игнорировать атрибуты файлов При копировании копирования по атрибутам файлов. О, и он поддерживает многоядерные машины, поэтому файлы копируются намного быстрее "параллельно" друг с другом, а не последовательно. 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.config"
поскольку вы фактически не меняете имя файла, вы можете удалить имя файла из пункта назначения, и вопросов не будет.
xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\ /Y
этот подход хорошо работает, когда конечный каталог гарантированно существует, и когда источником может быть файл или каталог.
работайте, используйте ReName... и назовите его каким-нибудь загадочным именем, а затем переименуйте его в собственное имя
C:
CD "C:\Users\Public\Documents\My веб-сайты \ AngelFire~Зоя\"
XCopy /D /I /V / Y "C:\Users\Public\Documents\My веб-сайты\HostGator ~ ZoeBeans\cop.htm"
Ren "cop.htm "" Христос-наш-Пасха.htm"
xcopy позволит вам скопировать один файл в указанную папку, это просто не позволит вам определить имя назначения. Если вам требуется имя назначения, просто переименуйте его перед копированием.
ren " bin\development\whee.конфиг.пример" подхлестывают.config
xcopy/R / Y "bin\development\whee.конфиг" "TestConnectionExternal\bin\Debug\"
правильно, если вы хотите скопировать только файл и изменить его имя в пункте назначения:
xcopy /f / y "bin\development\example.исполняемый" "TestConnectionExternal\bin\Debug\NewName.exe-файла*"
и это будет работать нормально
XCOPY С * в конце цели, чтобы скопировать файлы, существуют ли они или нет в месте назначения XCOPY с \ в конце цели для копирования папок и содержимого, независимо от того, существуют или нет в месте назначения
Как вариант
исходный dest-файл RoboForm для файлов RoboForm источник DEST для папок
вы не можете указать, что это всегда файл. Если вам не нужны другие функции xcopy, почему бы просто не использовать regular copy
?