O arquivo em lote XCOPY não consegue encontrar o diretório existente

O arquivo em lote XCOPY não consegue encontrar o diretório existente

Estou escrevendo um pequeno arquivo em lote para copiar meu projeto C# para outra unidade. Estou usando XCOPYpara copiar uma pasta inteira (ainda temos algumas máquinas XP, então robocopynão é uma opção). No entanto, quando executo o arquivo em lote, ele me diz que não consegue encontrar o FILE especificado (por que está procurando um arquivo e não uma pasta, não tenho ideia).

Aqui está minha estrutura de pastas. Gostaria de copiar folderpara a program\dstpasta na Ounidade.

src
-folder
-batchFile.bat

O
-program
--dst    

Meu batchFile.bat contém a seguinte linha

XCOPY  ".\folder" "O:\program\dst" /E

Quando executo isso, ele diz:

File Not Found - folder

mesmo que definitivamente exista (como uma pasta, não um arquivo).

Responder1

Como outras respostas sugerem, o uso .\folderinicia no diretório atual, enquanto você deseja a localização do arquivo em lote:

XCOPY  "%~dp0folder" "O:\program\dst" /E

Você poderia cdir para a pasta primeiro, mas isso é mais elegante, IMO.

Responder2

Eu tentei isso e funciona para mim. Suponho que você criou um atalho para o arquivo em lote e o diretório inicial não está correto. Nesse caso, adicionar um cdcomando ao início do arquivo em lote para alterar o diretório srcdeve corrigi-lo ou, alternativamente, usar um caminho absoluto em foldervez de relativo:

cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E

ou

XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E

Responder3

Em seu script, coloque o comando abaixo bem no início do seu arquivo CMD:

eco "%cd%"

Então observe o que este comando produz.

Se o caminho completo do diretório "pasta" for "C:\ABC\folder", o comando echo "%cd%" deverá gerar a saída "C:\ABC". No entanto, se você vir algo diferente disso, seu comando XCOPY acionará o erro de arquivo não encontrado. Isso é normal porque o XCOPY não pode determinar se "pasta" é um diretório ou arquivo e assume que é o padrão para um arquivo.

informação relacionada