elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Script para asignar letra permanente a usb en cualquier dispositivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Script para asignar letra permanente a usb en cualquier dispositivo  (Leído 3,639 veces)
jorguko

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Script para asignar letra permanente a usb en cualquier dispositivo
« en: 5 Junio 2019, 13:21 pm »

Buenas , alguien sabe un script para asignar una letra persistente a un disco duro externo?

Probé creando los siguientes dos archivos , pero no funciona:

un archivo txt llamado mount.txt:



Código
  1. list disk
  2. select disk 6
  3. list partition
  4. select partition 0
  5. assign letter=H
  6.  
  7. un archivo bat:
  8.  
  9. diskpart /s mount.txt



Mod: Prohibido publicar más de un tema con el mismo contenido. Prohibidos títulos todo en mayúsculas. Los códigos van entre etiquetas GeSHi.


« Última modificación: 5 Junio 2019, 15:47 pm por #!drvy » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: SCRIPT PARA ASIGNAR LETRA PERMANENTE A USB EN CUALQUIER DISPOSITIVO
« Respuesta #1 en: 5 Junio 2019, 15:18 pm »

No. No conozco ninguno, en realidad no se puede garantizar. Una letra se asigna entre las libres disponibles.
Entre las libres, en general se toma la primera libre encontrada recorriendo el abecedario...

Si un sistema (caso de win2), recuerda un dispositivo externo, cuando se vuelva a conectar (a veces hay problemas si no es en el mismo puerto), si lo reconoce (lo localiza en el registro como que tiene 'conocimiento' e info de él), puede asignarle la misma letra que tuvo, pero incluso así, sólo si dicha letra está disponible...

...y basado en esto, tu mismo puedes crear un script (por supuesto algo más complicado que solo 4 líneas) que haga esto mismo. Detecte cuando un dispositivo se conecta, lo localice  en una tabla de existentes, si no está le asigne la siguiente letra vacía (o luego una de tu elección y guarde esa como la 'preferente'). Pero en tal caso, debes mantener el tema para todas las unidades que se conecten, para así al conectar una unidad no preferente, asignar otra y así poder dejar libre las que 'recuerda'.

Nota que cuando se acabare el abecedario, la inserción de una nueva unidad, exigiría sí o sí, utilizar una letra que ya otra unidad tiene reservada para sí, y por eso la gestión se complica un poco más (para casos pocos frecuentes), pero ahora cada vez que esa unidad se desconecte o conecte tendrá preferencia por esa letra, luego dos unidades estarían compitiendo por dicha letra.

En tu caso deberías añadir como propiedad de una unidad: Si tiene asignada una letra como preferente o no, así las unidades sin preferencia no precisan competir por una letra, tomará la libre entre las no preferentes. De igual modo, sería preciso mantener una colección, con las letras manteneidas en preferencia  (una colección de letras en este caso, equivale a un simple string, exactamente igual que el MRU). Cuando a una unidad se le establece una letra con preferencia se localiza si no está ocupafda ya como preferente y si se encuentra libre se asigna  si no se informa y en tal caso se muestra datos de la unidad que la tiene reservada (aunque esté ausente) y se pide confirmar (o de plano se niega, a gusto de tu interés). Una unidad que tenía una letra preferente y cambia a otra, hace lo mismo previo, pero de confrimarse el cambio, libera de las letras preferentes la que tenía antes... etc, etc...


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: SCRIPT PARA ASIGNAR LETRA PERMANENTE A USB EN CUALQUIER DISPOSITIVO
« Respuesta #2 en: 8 Junio 2019, 11:00 am »

La asignación de una letra de forma "persistente" se puede garantizar, aunque no con un simple script o mejor dicho no asignando la letra una única vez por las razones que el compañero @NEBIRE ya has explicado.

¿Solución?: conociendo un dato específico del disco en cuestión, como por ejemplo el número de serie o el nombre del disco, se puede desarrollar un software que trabaje en segundo plano (o un servicio de Windows) que se suscriba al evento de inserción de dispositivos externos (mediante WMI), y así si, siempre que el disco se inserte en el puerto USB, el software en cuestión detectará el evento de inserción, reconocerá el disco por su número de serie o nombre, y le podrá asignar la letra deseada. Si hay algún otro dispositivo ocupando esa letra, siempre se puede modificar de forma automatizada por otra letra aleatoria/libre para dejar libre esa letra ocupada y poder asignarla al disco externo. Esto sería lo más realista que se podría lograr en términos de persistencia, me refiero, al hablar de persistencia.



@jorguko:

Por un módico precio te ofrecería mis servicios para el desarrollo de un software a medida con una interfaz gráfica donde podrías personalizar una letra persistente para el disco o los discos que quisieras. Eso si, nada de scripts en Batch, sería un software desarrollado bajo .NET Framework (con el código fuente incluido en la entrega del mismo).
Si estás interesado entonces por favor notificamelo por privado. En cualquier caso arriba te expliqué de forma superficial el modo de lograr tu objetivo, y la información no es que sea dificil de encontrar, pero se requiere conocimientos de programación en cualquier lenguaje que pueda suscribirse a las clases de eventos de WMI (ej. PowerShell, C#, VB.NET...), así que olvídate de Batch-script ya que la única interoperabilidad posible con la infraestructura WMI mediante Batch, sería utilizando la aplicación externa WMIC.exe para realizar consultas simples.

EDITO: Como alternativa en Batch-script, siempre puedes crear un búcle "infinito" que cada 2 o 5 segundos analice los dispositivos conectados para hallar e identificar el disco externo que quieres (mediante una consulta con WMIC.exe para obtener el nombre o número de serie de cada disco conectado), y luego llevar a cabo las operaciones necesarias con DiskPart.exe para asignarle la letra deseada y liberar esa letra si ya estuvies eocupada por otro dispositivo.
En este aporte de aquí abajo que publiqué en el foro, puedes encontrar un código que te serviría de forma parcial (para orientarte) sobre como podrías empezar a codear ese búcle infinito donde obtener las unidades y analizarlas:
    
(el búcle al que me refiero lo puedes encontrar a partir de la etiqueta con nombre ':MONITOR')

Pero en mi humilde opinión, no merece la pena hacer esto en Batch-script. Código tedioso o engorroso, ejecución lenta, y muchas imperfecciones por naturaleza.

Un saludo y suerte.
« Última modificación: 8 Junio 2019, 11:45 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Onion Pi Tor Proxy, solución para Internet privado en cualquier dispositivo
Noticias
wolfbcn 1 2,344 Último mensaje 18 Junio 2013, 19:24 pm
por SCU
Este dispositivo convierte cualquier WiFi en un VPN para navegar anónimo
Noticias
wolfbcn 0 1,887 Último mensaje 31 Julio 2015, 21:29 pm
por wolfbcn
Asignar letra USB a variable (batch)
Scripting
keypro 2 2,997 Último mensaje 27 Mayo 2016, 10:02 am
por keypro
Microsoft Andromeda, el mismo Windows para cualquier dispositivo
Noticias
wolfbcn 1 1,572 Último mensaje 7 Febrero 2017, 16:53 pm
por Orubatosu
Script para ingresar texto en cualquier web
Scripting
Jelopmen 0 1,572 Último mensaje 9 Enero 2019, 05:30 am
por Jelopmen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines