Estoy escribiendo un pequeño archivo por lotes para copiar mi proyecto de C# a otra unidad. Estoy usando XCOPY
para copiar una carpeta completa (todavía tenemos algunas máquinas XP, por lo que robocopy
no 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 folder
a la program\dst
carpeta en el O
disco.
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 .\folder
comienza desde el directorio actual, mientras desea la ubicación del archivo por lotes:
XCOPY "%~dp0folder" "O:\program\dst" /E
Podrías cd
ir 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 cd
comando al inicio del archivo por lotes para cambiar el directorio src
debería solucionarlo, o alternativamente usar una ruta absoluta en folder
lugar 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.