Copia arquivos específicos para outra pasta

0

Olá, tenho uma pergunta sobre como copiar arquivos de pastas específicas para outro com um arquivo em lote.

Eu tenho o seguinte código:

echo off
set arg1=%1
set "arg2=%~2"
set arg3=%3

FOR /R %arg1% %%G IN (%arg3%) DO (
    COPY %%G %arg2%\tempsrc\%%~nxG
)

Para a entrada dos argumentos:

arg1 = The path where the files are located
arg2 = the output path
arg3 = the file where it should be search for.

Para executar, por exemplo, o arquivo em lote: test.bat "C:\Batch\SourceDir" "C:'\Batch\Output" "test.xml"

Dentro da pasta SourceDir eu tenho duas subpastas:

  • 1000
    • text.xml
  • 2000
    • test.xml

Em cada uma dessas pastas, o arquivo test.xml está localizado. Eu quero copiar os dois arquivos para o diretório de saída e o arquivo latetst deve substituir o anterior.

Isso infelizmente não funciona. Alguém pode me dizer porque? Eu recebo a mensagem: O sistema não pode encontrar o arquivo especificado.

    
por Rotan075 04.04.2017 / 16:06

1 resposta

1

Uma pasta ou arquivo com um espaço resultará em um erro porque ele considerará vários argumentos. Se você adicionar citações entre sua origem e destino no comando COPY, provavelmente funcionará.

Seu script se tornaria:

echo off
set arg1=%1
set "arg2=%~2"
set arg3=%3

FOR /R %arg1% %%G IN (%arg3%) DO (
    COPY "%%G" "%arg2%\tempsrc\%%~nxG"
)
    
por 04.04.2017 / 16:26