Isso parece bastante simples e talvez eu esteja apenas ignorando o sinalizador adequado , mas como eu, em um comando, copiava um arquivo de um diretório para outro e o renomeia no diretório de destino? Aqui está o meu comando:
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"
Ele sempre solicita o seguinte:
TestConnectionExternal \ bin \ Debug \ whee.config especifica um nome de arquivo ou diretório no destino (F = arquivo, D = diretório)?
Eu quero suprimir esse prompt; a resposta é sempre F
.
command-line
command-prompt
xcopy
Sarah Vessels
fonte
fonte
cp
não é necessário copiar arquivos / diretórios por aí!Respostas:
Não use o
xcopy
, use emcopy
vez disso, ele não tem esse problema.xcopy
geralmente é usado ao executar cópias recursivas de vários arquivos / pastas ou quando você precisa dos recursos de verificação / solicitação que ele oferece. Para cópias de arquivo único, ocopy
comando funciona perfeitamente.fonte
copy
não copiará o arquivo se a estrutura de diretórios inteira do destino ainda não existir.xcopy
criará automaticamente todos os diretórios necessários.xcopy
e não apenascopy
.eu uso
para contornar isso.
fonte
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
para mim. Você é brilhanteOutra opção é usar um curinga de destino. Observe que isso só funciona se os nomes de arquivos de origem e destino forem os mesmos; portanto, embora isso não resolva o exemplo específico do OP, achei que valia a pena compartilhar.
Por exemplo:
criará uma cópia do arquivo "whee.config.example" no diretório de destino sem solicitar o arquivo ou diretório.
Atualização : Conforme mencionado por @chapluck:
Você pode mudar
"* "
para"[newFileName].*"
. Ele persiste na extensão do arquivo, mas permite renomear. Ou mais hacky:"[newFileName].[newExt]*"
para alterar a extensãofonte
Há algum tipo de recurso não documentado no XCOPY. você pode usar:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
Eu testei hoje. :-)
fonte
whee.config.example
na pasta de destino, porquewhee.config*
correspondewhee.config.example
.b.txtxt
, iniciei o comandoxcopy a.txt b.txt* /F /Y
e o arquivoa.txt
foi copiado para ob.txt
esperado. Além disso, ao usar os/F /Y
comutadores, a cópia real é mostrada na tela, exatamente como o esperado.Basta acessar http://technet.microsoft.com/en-us/library/bb491035.aspx
Aqui está o que é o PRINCIPAL PROBLEMA "... Se o Destino não contiver um diretório existente e não terminar com uma barra invertida (), a seguinte mensagem será exibida: ...
O destino especifica um nome de arquivo ou diretório no destino (F = arquivo, D = diretório)?
Você pode suprimir essa mensagem usando a opção de linha de comando / i, que faz com que o xcopy assuma que o destino é um diretório se a origem for mais de um arquivo ou diretório.
Demorei um pouco, mas tudo o que preciso é RTFM.
fonte
Portanto, há uma correção simples para isso. É reconhecidamente estranho, mas funciona. O xcopy não solicitará para descobrir se o destino é um diretório ou arquivo SE o novo arquivo (nome do arquivo) já existir. Se você preceder o comando xcopy com um simples eco no novo nome do arquivo, ele substituirá o arquivo vazio. Exemplo
fonte
Isto é da resposta de Bills.
Apenas para ser realmente claro para os outros.
Se você estiver copiando UM arquivo de um lugar para outro E quiser criar a estrutura de diretórios completa, use o seguinte comando:
Sim, coloque uma barra invertida no final do nome do arquivo e ele NÃO perguntará se é um arquivo ou diretório. Como existe apenas um arquivo na fonte, ele assumirá que é um arquivo.
fonte
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
fonte
Eu tive um problema semelhante e o robocopy e o xcopy não ajudaram, pois queria suprimir os comentários e usar um nome de arquivo de destino diferente. eu encontrei
trabalhando de acordo com minhas necessidades.
fonte
De volta à pergunta original:
Isso pode ser feito com dois comandos, por exemplo:
Simplesmente anexando "\ .." ao caminho do arquivo de destino, o diretório de destino será criado se ele ainda não existir. Nesse caso
qual é o diretório pai do diretório não existente
Pelo menos para WIN7 mkdir não se importa se o diretório
realmente existe.
fonte
XCOPY com * no final do destino para copiar arquivos, existindo ou não no destino XCOPY com * no final do destino para copiar pastas e conteúdos, existindo ou não no destino
alternativamente
RoboForm SOURCE DEST FILE para arquivos RoboForm SOURCE DEST para pastas
fonte
Sugiro em
robocopy
vez decopy
ouxcopy
. Usado como comando ou na GUI em clientes ou servidores. Tolerante a pausas na rede e você pode optar por ignorar os atributos do arquivo ao copiar a cópia por atributos do arquivo. Ah, e ele suporta máquinas com vários núcleos, para que os arquivos sejam copiados muito mais rapidamente em "paralelo" entre si, em vez de sequencialmente.robocopy
pode ser encontrado no MS TechNet.fonte
A coisa certa a fazer se você deseja copiar apenas o arquivo e alterar o nome no destino é:
E vai funcionar bem
fonte
Para duplicar arquivos grandes, o xopy com a opção / J é uma boa opção. Nesse caso, basta canalizar um F para arquivo ou um D para diretório. Além disso, você pode salvar trabalhos em uma matriz para futuras referências. Por exemplo:
Graças a Chand com algumas modificações: https://stackoverflow.com/users/3705330/chand
fonte
Use copiar em vez de xcopy ao copiar arquivos.
por exemplo, copie "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug \ whee.config"
fonte
copy /Y source destination
para passar na confirmação de substituição.Como você não está realmente alterando o nome do arquivo, você pode retirá-lo do destino e não haverá perguntas.
Essa abordagem funciona bem quando é garantido que o diretório de destino existe e quando a fonte pode ser igualmente um arquivo ou diretório.
fonte
Debug
é provável que o diretório exista.Solução alternativa, use Renomear ... e dê um nome críptico a ele e, em seguida, Renomeie-o ao seu Nome próprio
C:
CD "C: \ Usuários \ Público \ Documentos \ Meus Sites \ AngelFire ~ Zoe \"
XCopy / D / I / V / A "C: \ Usuários \ Público \ Documentos \ Meus sites \ HostGator ~ ZoeBeans \ cop.htm"
Ren "cop.htm" "christ-our-passover.htm"
fonte
O xcopy permitirá que você copie um único arquivo em uma pasta especificada, mas não permitirá que você defina um nome de destino. Se você precisar do nome do destino, basta renomeá-lo antes de copiá-lo.
ren "bin \ desenvolvimento \ whee.config.example" whee.config
xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"
fonte
ren "bin\development\whee.config" whee.config.example
Coloque um asterisco (*) no final do caminho de destino para pular a disputa de D e F.
Exemplo:
fonte
Xxxxxxxxxxxx especifica um nome de arquivo ou diretório no destino
fonte
Encontrei o mesmo problema ao tentar copiar um arquivo com novo nome apenas se o arquivo não existir no destino ou existir (com novo nome), mas for mais antigo. A solução é adicionar
*
char no final do nome do arquivo de destino. Exemplo:fonte
Você não pode especificar que seja sempre um arquivo. Se você não precisa dos outros recursos do xcopy, por que não usar apenas o regular
copy
?fonte
copy
, sendo um comando interno, não define ErrorLevel. Se você deseja influenciar o caminho de um arquivo em lotes, se ocorrer um erro de cópia, será necessário usá-loXCOPY
.