viernes, 6 de febrero de 2009

Herramientas en Python - Nombre Corto de Archivos

Programación en Python - Nombre Corto de Archivos


En esta sección iré publicando algunos codigos de programas hechos en python que pueden ir desde herramientas de trabajo en la pc hasta posibles videojuegos.

En esta ocacion, tratré sobre una pequeña herramienta que me ayudo en muchas ocaciones a la hora de pasar nombres de archivos en linea de comandos. Hay que notar que al hacer esto, automaticamente nos copiará la ruta y nombre del archivo en nombre corto de windows al clipboard.

Aquí dividiremos el proceso en tres partes:

1.- Creación del script

2.- Convertir el script en executable de windows

3.- Configuracion de windows


1.- Creacion del script

Lo que iremos necesitando primero es python, la libreria pywin32 y py2exe.

El código es el siguiente:

------------------------------------------------------------

#Shortname.pyw
#Aplicacion para obtener el nombre corto de un archivo

import sys

import win32api #Operaciones de nombres de archivos
import win32clipboard #Manejo de clipboard

from Tkinter import *

root = Tk()

corto = StringVar()

#obtencion del nombre corto del archivo o carpeta
corto.set(win32api.GetShortPathName(sys.argv[1]))

#En esta seccion se manipula el clipboard de windows
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(corto.get())
win32clipboard.CloseClipboard()

lSN = Label(root, text="Nombre Corto:")
eRes = Entry(root, textvariable=corto, width=len(corto.get())+4, state=DISABLED)
lSN.grid(sticky=W)
eRes.grid()

root.title("ShortName")
root.mainloop()
------------------------------------------------------------

2.- Convertir el script en executable de windows

Este programa se ejecutara al mandarlo llamar desde el explorer de windows, así que necesitaremos convertirlo en ejecutable con py2exe. EL siguiente es el script para la conversion.

---------------------------

#setup.py

from distutils.core import setup
import py2exe
setup(windows = ['shortname.pyw'])

---------------------------

El archivo setup.py debe de estar en la misma carpeta donde se encuentra el script shortname.py y ejecutar desde linea de comandos:

python setup.py py2exe

Una vez terminada la conversion, se generan dos carpetas, dist y build, renombramos dist como shortname.

3.- Configuracion de windows

Aquí tenemos dos opciones, elgeir a o b segun crean conveniente:

a) Configurar el registro de windows

Para poder obtener el nobre corto de un archivo o carpeta desde el explorer de windows debemos modificar un poco el registro de windows, no es algo muy complicado, pero es recomdable hacer una copia de seguridad del registro y tener medios de booteo y reparacion alternativos, por aquello de que algo salga mal, tambien si creen que algo les pueda salir mal, entonces eviten tocar el registro y brinquen esta opcion.

Damos click en inicio y luego en ejecutar y tecleamos regedit y damos enter o aceptar.

Elejimos la llave HKey_Classes_Root, luego en la subllave "*"

Abrimos despues la llave "shell", en caso de no existir, la creamos con click derecho en Nuevo y despues en Clave, esto crea una carpeta a la cual llamaremos "Shell" (sin comillas), pero solo en caso de que no exista.

De esta misma forma que se crea la llave de shell, creamosuna nueva clave llamada "shortname" (sin comillas), y dentro de esta, otra llamada "command" (tambien sin comillas)

Al crearse la llave command, nos genera del lado derecho una entrada con nombre "(predeterminado)" a la que damos doble click y en la ventana que nos aparece teclearemos lo siguiente en "informacion del valor":

C:\herramientas\shortname\shortname.exe "%1"

En este caso yo he puesto la carpeta shortname dentro de una llamada herramientas dentro de c:\, si tu la pusiste en otra ruta, pon esa ruta en ese valor y presionar aceptar.

Tambien hay que notar las comillas en "%1", de esta forma pasamos todo el nombre del archivo y la ruta como un único parametro, de otra forma si llega ha haber espacios dentro de la ruta o archivo esto generara un error por que python interpretara esto como diferentes parametros al llamar nuestro programa.

Del modo anterior podemos obetener el nombre corto de un archivo, pero si queremos esa misma funcionalidad para una carpeta, hay que hacer otra entrada dentro de HK_Classes_Root.

Dentro de HK_Classes_Root, buscamos una llave con el nombre "Directory", al igual que en el paso anterior vamos o creamos la llave "shell", dentro de shell, creamos una clave llamada "shortname" y dentro de shortname, "command", nuevamente doble click del lado derecho en "(predeterminado)" y ponemos la misma linea:

C:\herramientas\shortname\shortname.exe "%1"

Esto nos crea la opcion de dar click con el boton derecho del ratón sobre una carpeta y obener su nombre corto.

b) Desde la opcion "enviar a" de windows

Una opcion alternativa a esto si entrar al registro de windows consiste en abrir el explorador de windows normalemte y entrar a la carpeta "c:\Documents and Settings", elegir la carpeta del usuario en el que iniciemos normalmente y abrimos la carpeta "SendTo"; en esta carpeta creamos un acceso directo (click con boton derecho del ratón y nuevo/acceso directo) damos en examinar y buscamos el programa shortname.exe, damos siguiente y luego finalizar.

Espero esto les sirva en algunos momentos, a mi me ayudo mucho al momento de provar diferentes codigos de programas desde una misma ventana de MsDos sin tener que abrir una por cada archivo difernete en diferentes carpetas; tambien a la hora de realizar otros scripts para manejo de archivos entre otras opciones.

Solo por último, si lo desean pueden modificar este programa para que podamos elegir lo que deseamos, ya sea el nombre corto o el nombre completo, mostrar alguna imagen al momento de aparecer la ventana, o incluir un icono en el programa (en la configuracion del setup.py).

De momento es todo y como dije antes, espero esto les sirva.

Suerte!

No hay comentarios:

Publicar un comentario