Operaciones con archivos seleccionados: copiar, renombrar

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Operaciones con archivos seleccionados: copiar, renombrar

24 Jul 2018, 06:52

Buenos días ;)
Soy nuevo en esto, y la verdad que ando bastante pez.
Me estoy intentando hacer un script que ejecute algunas operaciones sobre ficheros seleccionados en una carpeta,
por ejemplo copiarlos a una ruta especificada al teclear yo "copy" o renombrarlos ponerles etiquetas al teclear "ren".
Lo ando mirando con los comandos "selectfile" y "copyfile", pero sólo se hacerlo si meto mis ficheros a una carpeta de origen fija, o operando con todos los ficheros de una carpeta, pero no con los que yo tenga seleccionados :roll:
Agradecería si me pudierais echar un cable :?:

Mil gracias :bravo:
txema
User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

24 Jul 2018, 08:13

Hola, no existe ningún comando selectfile o copyfile, me imagino que te refieres a FileSelectFile (que no sirve para lo que quieres hacer) y FileCopy respectivamente.
Una vez que hayas seleccionado los archivos en el explorador de archivos, utiliza el comando SendInput para presionar la tecla CTRL+C para copiar los archivos en selección, luego recuperas estos archivos mediante el portapapeles (Clipboard).
Por ejemplo:

El script de arriba copia los archivos seleccionados y te los muestra en un mensaje. Cada archivo está separado por una nueva línea, utiliza Loop Parse y FileCopy.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

24 Jul 2018, 13:04

Muchas gracias Flipeador :)
efectivamente me refiero a esos comandos que dices, los puse al revés
Ya veo entonces que "Clipboard" me sirve de variable para que haga las operaciones con los ficheros seleccionados, supongo que el comando sería mas o menos
"FileCopy, Clipboard, C:\Destino deseado"

¿Como haría para que eso me lo haga si pulso por ejemplo ctrl+1?
(mi idea es tener varios destinos definidos con atajos ctrl+1, ctrl+2...)

Un saludo y gracias de nuevo
User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

24 Jul 2018, 16:07

Añade la línea LCtrl & 1:: al principio del código anterior, y añade el siguiente código al final:

Code: [Select all] [Download] GeSHi © Codebox Plus

Loop, Parse, Clipboard, `n, `r
FileCopy % A_LoopField, C:\Destino deseado, 1 ; 1 = Sobreescribir
Return
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

25 Jul 2018, 05:59

Muchas gracias de nuevo :D
Voy a ver si lo apaño
Un saludo :bravo:
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

26 Jul 2018, 10:33

Ya he montado el script gracias a tu ayuda Flipeador, me funciona perfecto, lo único que no veo la barra de progreso de windows cuando copia un archivo, no sé si será posible. Yo utilizo "Teracopy" para la copia, y al no salirme nada no sé si lo hace con el estándard de windows o con teracopy.
También tengo que investigar como crear un log que me registre los archivos de los que he hecho copia y/o que les pueda poner etiquetas
(por ejemplo para cada fichero seleccionado crear un txt con nombre "*-copiado a destino 1.log" "-copiado a destino 2.log" (* sería el nombre original))
Muchas gracias de nuevo :clap:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

26 Jul 2018, 12:28

El comando FileCopy no utiliza ninguna interfaz, si quieres una interfaz la tienes que crear tu mismo. TeraCopy solo modifica el menú contextual, eso no hace que cualquier aplicación que vaya a copiar un archivo se vea obligada a hacerlo mediante TeraCopy. Si quieres copiar los archivos con TeraCopy tienes que utilizar el comando Run y media pasar los archivos por la línea de parámetros.

Para crear un registro de los archivos copiados utiliza el comando FileAppend dentro del Loop Parse, para ello agrega llaves { }. Mira los ejemplos en la documentación. Además, el comando FileCopy establece la variable incorporada ErrorLevel en verdadero (TRUE - valor distinto de cero) si hubo un error al copiar el archivo, que puedes utilizar en el registro.

Busca estos comandos y la variable en la documentación, mira los ejemplos e intenta implementar todo en tu Script, me comentas.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

26 Jul 2018, 14:29

Gracias de nuevo
Voy a mirar el FileAppend. El Loop y sus modificadores todavía no los entiendo muy bien, quiero estudiármelo también, a ver que me están haciendo en el script anterior
Un saludo
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

27 Jul 2018, 07:55

ya he visto mas o menos aunque no es exactamente lo que busco, me almacena en un log.txt los archivos de los que voy haciendo copia.
Lo malo es que no me hace salto de línea y me pone la ruta completa.
Tengo que seguir investigando, yo lo que quiero que me pongo solo el nombre (sin la ruta) y uno encima de otro, ahí vamos poco a poco
Gracias de nuevo

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

27 Jul 2018, 08:09

Utiliza el comando SplitPath con la variable A_LoopField para recuperar el nombre del archivo en otra variable. Para indicar un salto de línea añade la cadena `r`n. Por ejemplo: FileAppend % Variable . "`n", log.txt.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

27 Jul 2018, 08:17

Por cierto, aquí tienes la sintaxis de la línea de parámetros de TeraCopy.
Por ejemplo: RunWait TeraCopy.exe Copy "%A_LoopField%" "Y:\Pruebas AutoHotkeys\Destino 1", si no funciona puedes probar a reemplazar TeraCopy.exe por la ruta completa al ejecutable, entre comillas.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

27 Jul 2018, 09:12

Muchas gracias una vez mas.
Me estudio esos comandos y lo comento
Un saludo
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

30 Jul 2018, 06:04

Flipeador wrote:Utiliza el comando SplitPath con la variable A_LoopField para recuperar el nombre del archivo en otra variable. Para indicar un salto de línea añade la cadena `r`n. Por ejemplo: FileAppend % Variable . "`n", log.txt.


Bueno, más o menos ya está, con el log correcto y teracopy, lo único malo es que abre una ventana por cada fichero copiado, no copia todos de una operación.
Quizá me admita sacarlo fuera del Loop, voy a probarlo a ver. Mantengo el FileCopy en la reserva con ;
Cuales serían los comandos para renombrar ficheros? Por lo que he visto sería FileMove especificando la misma ruta de origen y destino :?:
Muchísimas gracias Flipeador, estoy aprendiendo un montón :thumbup: :wave:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
Flipeador
Posts: 1005
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Operaciones con archivos seleccionados: copiar, renombrar

30 Jul 2018, 09:09

Prueba este script (si TeraCopy no copia los archivos correctamente puedes intentar reemplazar UTF-16 por UTF-8 o CP0).:

Code: [Select all] [Expand] [Download] (Untitled.ahk)GeSHi © Codebox Plus



Para mover los archivos utiliza el comando FileMove, tal cual lo has descrito. Para mover con TeraCopy solo hay que cambiar Copy por Move.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library
tx75
Posts: 9
Joined: 24 Jul 2018, 06:42

Re: Operaciones con archivos seleccionados: copiar, renombrar

31 Jul 2018, 05:40

Eres un artista, funciona perfectamente, aunque ya se escapa de mi entendimiento. :bravo:
En mi script, al estar Teracopy dentro de un loop, recibe las ordenes de copiar archivos de uno en uno, por eso me lanza una ventana por cada archivo.
Voy a estudiarmelo detenidamente para tratar de entenderlo, veo que están comentadas todas las órdenes

Muchísimas gracias Flipeador :bravo:

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 1 guest