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.