El archivo por lotes XCOPY no puede encontrar el directorio existente

El archivo por lotes XCOPY no puede encontrar el directorio existente

Estoy escribiendo un pequeño archivo por lotes para copiar mi proyecto de C# a otra unidad. Estoy usando XCOPYpara copiar una carpeta completa (todavía tenemos algunas máquinas XP, por lo que robocopyno es una opción). Sin embargo, cuando ejecuto el archivo por lotes, me dice que no puede encontrar el ARCHIVO especificado (no tengo idea de por qué está buscando un archivo y no una carpeta).

Aquí está mi estructura de carpetas. Me gustaría copiar foldera la program\dstcarpeta en el Odisco.

src
-folder
-batchFile.bat

O
-program
--dst    

Mi loteFile.bat contiene la siguiente línea

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

Cuando ejecuto esto, dice:

File Not Found - folder

aunque definitivamente existe (como una carpeta, no como un archivo).

Respuesta1

Como sugieren otras respuestas, el uso .\foldercomienza desde el directorio actual, mientras desea la ubicación del archivo por lotes:

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

Podrías cdir a la carpeta primero, pero en mi opinión, esto es más elegante.

Respuesta2

Probé esto y funciona para mí. Supongo que ha creado un acceso directo al archivo por lotes y el directorio de inicio no es correcto. Si es así, agregar un cdcomando al inicio del archivo por lotes para cambiar el directorio srcdebería solucionarlo, o alternativamente usar una ruta absoluta en folderlugar de una relativa:

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

o

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

Respuesta3

En su secuencia de comandos, coloque el siguiente comando al comienzo de su archivo CMD:

eco "%cd%"

Luego observe lo que produce este comando.

Si la ruta completa del directorio de su "carpeta" es "C:\ABC\folder", entonces el comando echo "%cd%" debería producir el resultado "C:\ABC". Sin embargo, si ve algo diferente a esto, entonces su comando XCOPY activa el error de archivo no encontrado. Esto es normal porque XCOPY no puede determinar si "carpeta" es un directorio o un archivo y asume que el valor predeterminado es un archivo.

información relacionada