xcopy Não Carregando Arquivo / Consulta de Diretório

2

Estou tentando usar o xcopy para copiar um arquivo de uma máquina para outra em nossa rede como parte de um programa Java. Eu estou chamando xcopy assim:

xcopy "C:\Program Files\path\to\my\file" "\othermachine\c$\Documents and Settings\<myUserName>\Desktop\Test\path\in\directory\structure\to\file" /e /y /i

Como estou chamando de Java, preciso que todos os prompts sejam suprimidos. Na maior parte, \ i e \ y fizeram exatamente isso. No entanto, para este arquivo / eu falha e recebo o prompt do arquivo ou diretório. O resultado é que ele trava o programa inteiro.

Eu também tentei chamá-lo com / s / t / q anexado às opções existentes, sem sucesso. Por que o / i não está funcionando para suprimir o prompt Arquivo ou Diretório? Existe uma ordem em que preciso chamar as opções? Há algo mais que preciso fazer?

EDIT: devo mencionar, o arquivo é um arquivo de texto - única linha de texto. Não possui uma extensão. Parece com isto: FILE-NAME

    
por Daniel Bingham 02.09.2009 / 16:01

5 respostas

7

echo F faz o truque:

echo F | xcopy "C:\Program Files\path\to\my\file" "\othermachine\c$\Documents and Settings\<myUserName>\Desktop\Test\path\in\directory\structure\to\file" /e /y /i

Observe que o caractere pode diferir em versões localizadas (meu alemão espera D por arquivo (Datei) ou V por diretório (Verzeichnis))

    
por 03.02.2010 / 11:37
6

Um truque aparentemente não documentado é colocar um * no final do destino - então o xcopy copiará como um arquivo, então

xcopy c:\source\file.txt c:\destination\newfile.txt*

O truque echo f | xcopy ... não funciona em versões localizadas do Windows, em que o prompt é diferente.

    
por 23.01.2013 / 21:13
1

Este thread no Stackoverflow não tem resposta marcada, mas pode ajudá-lo (parece ser a mesma pergunta).

    
por 02.09.2009 / 16:14
0

Eu sempre achei um truque útil para essas situações ter um arquivo de texto com um Y nele e marcar < y.txt no final do xcopy

    
por 02.09.2009 / 18:23
0

Mais um truque possível é a pré-criação de um arquivo ou pasta de destino. Então xcopy não perguntaria, porque já saberia. Eu não diria que esta solução é melhor do que as mencionadas acima, é apenas diferente e, portanto, eu quero que ela seja aqui também.

Minha tarefa simples era copiar vários arquivos de uma pasta de rede para uma pasta local acumulada.

  • AAAAA \ Disk1.zip = > AAAAA.zip
  • BBBBB \ Disk1.zip = > BBBBB.zip
  • et cetera

O comando original (uma linha de um arquivo de script .cmd ligeiramente maior) era

for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip

Isso, no entanto, gera muitas dessas perguntas (F) ile-ou (D) -irectory em um primeiro uso com arquivos novos (não conhecidos antes). Especialmente se eu estiver preenchendo uma nova pasta de destino vazia.

Em seguida, as respostas echo F e Asterisk Hack - elas funcionam bem também.

  • for /d /r %SRC% %%1 in (*.*) do echo f | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
  • for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip*

Agora, mais uma solução em potencial seria CRIAR explicitamente a pasta de destino do arquivo logo antes de emitir o comando xcopy .

Para arquivo, por exemplo:

echo. > C:\Temp\TargetPlace
xcopy Source C:\Temp\TargetPlace

Infelizmente, o Windows por padrão não possui o comando touch , bastante útil para criar um arquivo fictício de 0 bytes.

Por pasta, por exemplo:

mkdir C:\Temp\TargetPlace
xcopy Source C:\Temp\TargetPlace

Concedido, são necessários dois comandos - duas linhas - no script shell do CMD. Você não pode colocar vários comandos no CMD para loop facilmente, mas aqui você pode canalizar os comandos juntos (contanto que xcopy NÃO realmente leia qualquer entrada do usuário quando emitido o comando específico, que pode mudar para exemplo em futuras versões do Windows, embora improvável).

Para pastas:

for /d /r %SRC% %%1 in (*.*) do md %~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip

Para arquivos:

for /d /r %SRC% %%1 in (*.*) do echo. >%~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip

Este último comando tem dois redirecionamentos de saída entre - echo. > ... | %código%. Mas pelo menos em xcopy arquivos do Windows 8.1 ele funciona.

    
por 19.06.2018 / 11:56