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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Ayuda para generar listas con impresoras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Ayuda para generar listas con impresoras  (Leído 5,345 veces)
Hekaly

Desconectado Desconectado

Mensajes: 85



Ver Perfil WWW
[BATCH] Ayuda para generar listas con impresoras
« en: 17 Octubre 2012, 11:29 am »

Hola, buenos dias a todos.

Estoy haciendo un script para gestionar impresoras , y la primera parte que quiero hacer es que se genere un listado de las que ya estan instaladas y que el usuario elija cual quiera configurar, borrar, etc.

Lo que me gustaria que salga es de la siguinte forma.

1. Impresora 1
2. Impresora 2
3. Impresora 3
.
.
.

El listado de impresoras se como sacarlo, de la siguente manera.
Código:
cscript prnmngr.vbs -l | find "Nombre de impresora"

Esto me saca un numero x de impresoras, y el tema que queiro saber es que el script me genere un menu con tantas optiones como impresoras tenga.

Osea seria hacerla con un for y que por cada impresora (que se saca del comando anterior) cree una opcion, pero como haria que se creen tambien x comprobaciones (set si %option%==1 tal impresora, si es 2 otra, etc....) se puede generar set dentro de for?? , deberia hacer un enableextension o disableenableextensions???

Espero que me puedan ayudar, muchas gracias.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #1 en: 17 Octubre 2012, 22:41 pm »

El listado de impresoras se como sacarlo, de la siguente manera.
Código:
cscript prnmngr.vbs -l | find "Nombre de impresora"
por cada impresora (que se saca del comando anterior) cree una opcion

No dispongo de ese archivo VBS, si puedes poner el output completo quizás puedo ayudarte a hacer el for "a ojo"...

se puede generar set dentro de for??
si
deberia hacer un enableextension o disableenableextensions???
Código:
Setlocal enabledelayedexpansion
aunque hay otras formas.

saludos


En línea

Hekaly

Desconectado Desconectado

Mensajes: 85



Ver Perfil WWW
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #2 en: 18 Octubre 2012, 09:21 am »

Gracias EleKtro H@cker por la respuesta.

La verdad es que me estoy liando con el for, cuando uso el comando para listar las impresoras me sale esto...



Esta imagen la gereno con esta sentencia.

Código:
FOR /f "tokens=*" %%a in ('cscript prnmngr.vbs -l ^| find "Nombre de impresora"') DO (echo %%a)

La idea es que salga solo el nombre de la impresora, pero si pongo.

Código:
FOR /f "tokens=4*" %%a in ('cscript prnmngr.vbs -l ^| find "Nombre de impresora"') DO (echo %%a)

Solo me mustra la primera palabra del nombre de la impresora.



Pero poniendo "tokens=4*" o "tokens=4,5,6" o "tokens=4* delims=, " etc npo funciona, me sale solo el primer nombre.

Como puedo solucionarlo??, es por la tuberia ^| ??


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #3 en: 18 Octubre 2012, 09:51 am »

claro te estás comiendo un token, solo estás mostrando el token "4", prueba así:

Código
  1. FOR /F "tokens=3,*" %%a in ('cscript prnmngr.vbs -l ^| find "Nombre de impresora"') DO (echo %%b)

saludos
En línea

Hekaly

Desconectado Desconectado

Mensajes: 85



Ver Perfil WWW
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #4 en: 18 Octubre 2012, 10:23 am »

Gracias de nuevo.

Lo de "tokens=4,*" se me habria pasado al poner la coma, pero lo que no sabia que hay que %%a  y luego %%b osea que no son las letras igual.

Ahora voy a ver si puedo crear los if %option% y set para comprobarlos y redirigir el codigo para cada impresora.

Si  tengo mas dudas preguntare por aqui.
En línea

Hekaly

Desconectado Desconectado

Mensajes: 85



Ver Perfil WWW
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #5 en: 22 Octubre 2012, 00:23 am »

Hola de nuevo.

Vengo pidiendo mas ayuda para crear las listas. He estado un par de dias haciendo otras partes del script, como cambiar propiedades de impresoras, realizar backup de propiedades, restaurar, cambiar puertos, crearlos etc, pero ha llegado la hora de generar las listas y ahi me surgen los problemas.

El objetivo que tengo en mente es que cuando me aparezca el nombre de todas las impresoras pueda elegir una de ellas, esto lo hago con un set

Código:
set /p opcion="Elige una impresora: "

Pero claro para distinguir que impresora elijo de la lista mi idea es crear lo siguiente

[1] --- Impresora 1
[2] --- Impresora 2
[3] --- Impresora 3

Que al poner un numero haga una comprobacion

Código:
if %opcion% EQU 1 (XXXXXXXXX) else (XXXXXXX)
if %opcion% EQU 2 (XXXXXXXXX) else (XXXXXXX)
if %opcion% EQU 3 (XXXXXXXXX) else (XXXXXXX)

Ahi viene mi problema no se como crear esto.

Empiezo con intentar que en cada impresora salga un numero correspondiente, pense en un contador, pero lo maximo que consigo es que me salga de esta forma

[1] --- Impresora 1
[1] --- Impresora 2
[1] --- Impresora 3

Osa siempre el mismo numero

Uso esto.
Código:
FOR /F "tokens=3,*" %%a in ('cscript prnmngr.vbs -l ^| find "Nombre de impresora"') DO set /a impresoras=1+impresoras
echo [%impresoras%] --> %%b

Para mostrar la lista

Donde previamente he inicializado un contador a 1 al principio del script

Código:
set /a impresoras=1

Pero como he dicho antes solo me sale un numero, he probado a usar el for con parentesis y sin parentesis (salen cosas distintas, pero no se por que), en usar el comando con !! en vez de %% ya que uo un set dentro de un for (perviamente tengo setlocal enabledelayedexpansion)

Ademas que no se como puedo generar los set %opcion% EQU 1 ...
Como no me salia pense que si solo elijo una impresora el nombre se guarda en variable y ya puedo trabajar con ella, por lo que no haria falta escribir tantas comprobaciones como impresoras tenga.

La pregunta es, como puedo hacer esto, es decir, escribir el numero de la lista en vez de tener que escribir el nombre completo de la impresora???

Espero haberme expresado bien, muchas gracias por vuestra ayuda.
« Última modificación: 22 Octubre 2012, 00:34 am por Hekaly » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: [BATCH] Ayuda para generar listas con impresoras
« Respuesta #6 en: 22 Octubre 2012, 01:13 am »

Como ya te dije no dispongo del vbs para testear así que estos códigos los hago "a ojo", esto debería funcionar, sinó, modificalo un poco para arreglarlo:

Código
  1. @Echo OFF
  2.  
  3. :: By Elektro H@cker
  4.  
  5. REM FOR %%a in (pepe manolo elektro elhacker.net) DO (
  6. REM Set /A "NUM+=1"
  7. REM Call Set "Impresora%%NUM%%=%%a"
  8. REM )
  9.  
  10. FOR /F "tokens=3,*" %%a in ('cscript prnmngr.vbs -l ^| find "Nombre de impresora"') DO (
  11. Set /A "NUM+=1"
  12. Call Set "Impresora%%NUM%%=%%b"
  13. )
  14.  
  15. For /L %%a in (1,1,%NUM%) DO (
  16. Call Set "choices=%%choices%%%%a"
  17. Echo: [%%a] Impresora: %%Impresora%%a%% | MORE
  18. )
  19.  
  20. choice /C %CHOICES% /M "elige una impresora >> "
  21.  
  22. Echo: Has elegido la impresora "%%IMPRESORA%ERRORLEVEL%%%" | MORE
  23.  
  24. Pause&Exit

Te debería salir algo así:



PD: si no te sale, examina con detalle los tokens del primer FOR, ahí estará el problema y la solución...

Saludos.
« Última modificación: 22 Octubre 2012, 01:23 am por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Generar Reporte de Pings con Proceso Batch (.bat)
Scripting
nicolas_hernandez 8 7,346 Último mensaje 18 Febrero 2014, 17:36 pm
por P3NDULO
Ayuda: Batch generar archivo con simbolo >
Scripting
DameBanda 2 2,837 Último mensaje 29 Junio 2014, 14:25 pm
por DameBanda
[AYUDA] Script para generar seriales los crea repetidos
Ingeniería Inversa
Graphixx 2 2,757 Último mensaje 16 Septiembre 2014, 21:11 pm
por Graphixx
Dropbox - Generar LinkShare(compartir) con batch o vbs + Python
Scripting
santizuche 3 2,264 Último mensaje 29 Diciembre 2015, 17:39 pm
por #!drvy
Ayuda para generar un sorteo
Programación C/C++
JuanTheTropper 1 1,523 Último mensaje 10 Diciembre 2018, 01:34 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines