viernes, 6 de febrero de 2015

Desactivar ordenación numérica en Windows

Por mis cojones que tenía que hacerlo. Vuelta a las investigaciones absurdas de las nimiedades de la informática.

En muchas bases de datos, cuando tienes multitud de archivos, o mejor dicho, nombres de archivos, la ordenación de estos difiere a como te ordena esos archivos Windows. Yo por ejemplo trabajo con referencias de artículos y fotos cuyos nombres de archivos coinciden con esas referencias. De esta manera mantenemos un catálogo donde para buscar la imagen del producto solo tenemos que buscar el archivo que se llama como la referencia del producto.

¿Cual era el problema? Resulta que las referencias tienen cierta lógica, una especie de orden. Por poner un ejemplo, voy a poner una serie de referencias y imaginemos que son llaveros:

14000
14001
14002
...
14999



La ordenación en la base de datos de las referencias va a ser exactamente igual a la ordenación de las imágenes en el explorador de windows. Ahora imaginemos que se nos han agotado las referencias que empiezan por 14, y las que empiezan con 13 son otros artículos, y las que empiezan por 15 son otros bien distintos. ¿Qué hacemos? Una solución podría ser añadir archivos con los mismos números pero añadir al final letras. Windows seguirá ordenando bien los archivos.

14000
14000A
14000B
14001
14001A
14001B
14001C
14002
...
14999


El problema de usar letras es que se limita mucho la cantidad de referencias que vamos a poder usar, así pues se toma la decisión de colocar al final 2 dígitos más. Eso hará que entre número y número podamos introducir hasta 100 referencias nuevas. Pero aquí es donde viene el problema, porque en nuestro programa de facturación (Y en cualquier base de datos en realidad) el orden es el que queremos, pero el sistema operativo no hace lo mismo exactamente. Este es el orden de las referencias en la base de datos y después la foto de lo que hace Windows:

14000
1400001
1400002
14001
1400101
1400102
1400103
14002
...
14999


Como vemos, Windows está clasificando antes los archivos que tienen 5 dígitos y después lo que tienen 7. Nosotros queríamos que tras la foto del 14000 saliera la foto del 1400001 y no la imagen 14001.


Bueno, no pasa nada, se puede arreglar para conseguir esto:


  • Vamos a Inicio y escribimos gpedit.msc
  • Vamos a Configuración del Equipo, Plantillas administrativas, componentes de Windows.
  • Buscamos Explorador de Windows y una vez dentro habilitamos la opción "Desactivar la ordenación numérica en el explorador de windows". Veamos una imagen:


También podremos ir al editor del registro y cambiar esta clave:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoStrCmpLogical"=dword:00000001

También podréis crear un archivo con el bloc de notas con este contenido que voy a indicar y ponerle la extensión .reg en lugar de .txt. De esta formas podréis tener un archivo que cambie estos valores con solo hacer doble click. De esta manera es la única forma de hacerlo en Windows XP:

Windows Registry Editor Version 5.00 

;Creado por Kloud - www.fuertecondor.com

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoStrCmpLogical"=dword:00000001


Espero que esto le pueda servir a ese 0,001% de la población a la que va dirigida esta entrada, como siempre ;)