Método 1:usando `%~ dp0` (más simple y más recomendado)
Este método utiliza la variable `%~ DP0`, que se expande a la unidad y la ruta del archivo por lotes actual. Este es el enfoque más confiable y recomendado.
`` `lote
@eco Off
Copiar "%~ dp0myfile.txt" "%~ dp0destinationfolder \ myfile.txt"
`` `` ``
* `%~ DP0`:Obtiene la unidad y la ruta del archivo por lotes.
* `myFile.txt`:el archivo que desea copiar. Reemplace esto con su nombre de archivo real.
* `DestinationFolder`:el nombre de la carpeta donde desea copiar el archivo. Crea esta carpeta de antemano si no existe. También puede usar rutas absolutas aquí si es necesario.
Método 2:usando `cd` (menos robusto)
Este método cambia el directorio a la ubicación del archivo por lotes antes de realizar la copia. Es menos robusto porque se basa en que el directorio de trabajo actual se establezca correctamente.
`` `lote
@eco Off
Pushd "%~ dp0"
Copiar myFile.txt DestinationFolder \ myfile.txt
POPD
`` `` ``
* `pushd"%~ dp0 "`:Cambia el directorio a la ubicación del archivo por lotes. `Pushd` guarda el directorio actual, lo que le permite restaurarlo más tarde.
* `POPD`:restaura el directorio original.
Método 3:Manejo de espacios en rutas de archivo (crucial para robustez)
Si sus nombres de archivo o rutas de carpetas contienen espacios, * debe * citarlos. Los ejemplos anteriores ya hacen esto, pero vale la pena enfatizarlo. El incumplimiento de la cita conducirá a errores.
Ejemplo con espacios:
`` `lote
@eco Off
Copiar "%~ dp0my file.txt" "%~ dp0destination carpeta \ my file.txt"
`` `` ``
Método 4:Copiar múltiples archivos usando comodines
Puede usar comodines para copiar varios archivos a la vez:
`` `lote
@eco Off
Copiar "%~ dp0*.txt" "%~ dp0DestinationFolder \"
`` `` ``
Esto copia todos los archivos `.txt` del directorio del archivo por lotes al 'DestinationFolder`.
Manejo de errores (importante)
Para obtener scripts más robustos, agregue el manejo de errores para verificar si la copia fue exitosa:
`` `lote
@eco Off
Copiar "%~ dp0myfile.txt" "%~ dp0destinationfolder \ myfile.txt"> nul 2> y 1
Si % ErrorLevel % ==0 (
El archivo de eco copiado con éxito.
) demás (
Echo Error de copia de copia del archivo. Código de error:%ErrorLevel %
)
`` `` ``
* `> nul 2> &1`:suprime la salida del comando` copy`.
* `if % ErrorLevel % ==0`:Verifica el nivel de error. `0` significa éxito.
Recuerde reemplazar `" myFile.txt "`, `" DestinationFolder "`, y otros marcadores de posición con su archivo real y nombres de carpetas. Siempre pruebe sus archivos por lotes a fondo. El manejo incorrecto de los espacios en nombres de archivo y rutas es una fuente común de errores.