¿Cómo utilizar el archivo por lotes For Loop para crear rutas relativas?
Uno de los retos a los que puede enfrentarse al utilizar un archivo por lotes para bucle es cómo crear una ruta relativa del archivo o carpeta procesado por el bucle. Una ruta relativa es una ruta que no contiene el nombre de la unidad o directorio inicial, sino sólo una parte de una ruta diferente del directorio actual.
Por ejemplo, si el directorio actual es C:\Users\Alice\Documents, entonces la ruta relativa del archivo C:\Users\Alice\Pictures\image.jpg es …\Pictures\image.jpg.Por ejemplo, si el directorio actual es C:\Users\Alice\Documents, entonces la ruta relativa del archivo C:\Users\Alice\Pictures\image.jpg es …\Pictures\image.jpg.
La creación de rutas relativas puede ser útil si desea mover, copiar o renombrar archivos o carpetas a una ubicación diferente, pero manteniendo la estructura de directorios original. Por ejemplo, puede que desee mover todos los archivos de texto del directorio C:\Users\Alice\Documents y sus subdirectorios al directorio D:\Backup, pero manteniendo los subdirectorios.
Para crear rutas relativas con archivos batch for loop, puede utilizar alguna de las siguientes técnicas:
- Utiliza la variable de entorno «CD» para obtener el directorio actual, y lo elimina de la ruta completa del archivo o carpeta mediante el comando «SET».
- Utilice la opción /V:ON para activar la expansión retardada de variables, y utilice un signo de exclamación (!) como delimitador de variables en lugar de un signo de porcentaje (%). Esto es útil si desea cambiar el valor de una variable en un bucle.
- Utiliza los comandos «PUSHD» y «POPD» para cambiar el directorio actual mientras se está en el bucle, y utiliza un punto (.) para referirse al directorio actual.
Ejemplo:
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /R C:\Users\Alice\Documents %%G IN (*.txt) DO ( SET "source=%%G" SET "destination=!source:%CD%=!" ECHO !destination! ) ENDLOCAL
El comando anterior buscará todos los archivos de texto en el directorio C:\Users\Alice\Documents y sus subdirectorios, y mostrará sus rutas relativas desde el directorio actual. Por ejemplo, si el directorio actual es C:\Users\Alice\Documents, entonces la ruta relativa del archivo C:\Users\Alice\Documents\Folder1\File1.txt es Folder1\File1.txt.
@ECHO OFF FOR /R C:\Users\Alice\Documents %%H IN (*.txt) DO ( PUSHD "%%~dpH" SET "source=%%H" SET "destination=%CD%\%%~nxH" ECHO %destination% POPD )
El comando anterior buscará todos los archivos de texto en el directorio C:\Usuarios\Alice\Documentos y sus subdirectorios, y mostrará su ruta completa utilizando el directorio actual como prefijo. Por ejemplo, si el directorio actual es D:\Backup, entonces la ruta completa del archivo C:\Users\Alice\Documents\Folder1\File1.txt es D:\Backup\Folder1\File1.txt.
Conclusión
El bucle for de un fichero por lotes es una función muy útil para crear ficheros por lotes más eficaces y flexibles. Mediante un bucle for, puede repetir un comando específico para cada elemento de un conjunto de datos, como una lista de valores, un rango de números o el resultado de otro comando.
También puede utilizar algunas de las opciones adicionales disponibles para los bucles for, como /F, /R y /D, para procesar archivos de texto, subcarpetas o directorios. Además, también puede acceder a información sobre los archivos y carpetas procesados por el bucle, como el nombre, la extensión, el tamaño, la fecha de modificación, los atributos y la ruta, mediante la modificación de la ruta en las variables del bucle.
Por último, también puede crear una ruta relativa de los archivos y carpetas procesados por el bucle, utilizando varias técnicas como eliminar el directorio actual de la ruta completa, activar la expansión retardada de variables o cambiar el directorio actual mientras se está en el bucle.
Esperamos que este artículo sea útil para aquellos de ustedes que quieran aprender más acerca de los archivos por lotes para bucles en Windows. Si tiene alguna pregunta o sugerencia, por favor deje un comentario a continuación. Gracias por su lectura.