AutoHotkey (Tutorial 4): Mover cientos de archivos y carpetas con un atajo de teclado.
En esta oportunidad vamos a ver una forma de mover archivos entre dos carpetas (también conocido como el “cortar/pegar”) con la facilidad de un script, y la posibilidad de hacerlo mediante un atajo de teclado.
01|Cortar y pegar (mover)
Basta con ajustar el origen y destino de los archivos a mover. Lo explicaré por partes.
En la primera línea estoy definiendo el atajo de teclado asignado a este script. En este caso es Alt+S. (A propósito, sólo lo estamos asignando al Alt izquierdo, que se simboliza con el “!”.) Luego, en la tercera línea incluimos el path de origen de los archivos que queramos mover, seguido del path de destino. En este caso estoy moviendo todos los archivos (para simbolizar el total usamos dos asteriscos con un punto entre ambos *.*) desde la carpeta Downloads que tengo en el iPod a la carpeta Downloads de mi disco. En la última línea, agregué un cuadro de dialogo que me alerta cuando los archivos se movieron, pero podemos prescindir de esto sin afectar el desempeño del script.
!s::
; The following example moves all files and folders inside a folder to a different folder:
ErrorCount := MoveFilesAndFolders("I:\Downloads\*.*", "C:\Documents and Settings\LEO\Mis documentos\Downloads\")
if ErrorCount <> 0
MsgBox Archivos movidos a Downloads.
Luego continuamos con los parámetros del movimiento de archivos. Entre todo el código quiero destacar que si movemos 100 archivos (y/o carpetas) y por alguna razón no se copian algunos, un cuadro de diálogo nos alertará con el nombre de cada archivo que no se pudo mover.
MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
; Moves all files and folders matching SourcePattern into the folder named DestinationFolder and
; returns the number of files/folders that could not be moved. This function requires v1.0.38+
; because it uses FileMoveDir's mode 2.
{
if DoOverwrite = 1
DoOverwrite = 2 ; See FileMoveDir for description of mode 2 vs. 1.
; First move all the files (but not the folders):
FileMove, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
ErrorCount := ErrorLevel
; Now move all the folders:
Loop, %SourcePattern%, 2 ; 2 means "retrieve folders only".
{
FileMoveDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
ErrorCount += ErrorLevel
if ErrorLevel ; Report each problem folder by name.
MsgBox Could not move %A_LoopFileFullPath% into %DestinationFolder%.
}
return ErrorCount
}
02|Notas
a. Esto es útil cuando las carpetas de origen y destino son fijas, es decir que si el iPod dejara de ser la letra “I” para ser la “H” el script simplemente no funcionaría, obligándonos a editarlo cambiando la letra que hace referencia al disco externo.
b. Recordar que lo gris debe copiarse todo junto a un solo script. (Es decir, sin mis explicaciones a mitad del mismo.)
c. Evidentemente, y siendo la idea de este post, podemos copiar infinitos archivos y carpetas con solo unas simples líneas de código. (Por supuesto que la espera se volverá frustrante conforme la cantidad de archivos a ser movidos aumente, pero ese es otro problema ;)
Todas las entradas sobre AutoHotkey.
Cerrar aplicaciones con un botón del mouse o un atajo de teclado.
Ocultar ventanas en la bandeja del sistema.
Agregar un prefijo a muchos archivos automáticamente.
Cambiar la extensión de un archivo.
Mover cientos de archivos y carpetas con un atajo de teclado.
Menú de carpetas favoritas en el Explorador de Windows y los cuadros de diálogo Guardar/Abrir.
Corrector automático al escribir en todos los programas.
AutoHotkey Tutorial: Cómo automatizar Windows.
¿Comentarios? ¿Dudas? ¿Críticas?
0 comentarios:
Publicar un comentario en la entrada