Ayuda con batch

Iniciado por kriminal_27, 27 Abril 2013, 17:09 PM

0 Miembros y 1 Visitante están viendo este tema.

kriminal_27

Muchas gracias por su atencion! estoy en la necesidad de crear un bat que realice lo siguiente:
Entorno: dominio
Consulta: buscar un usuario
Resultado: poder realizarle un logoff

En si lo que hace el script es, pedirle al quien lo ejecute, que escriba el nombre del usuario , hace una busqueda ( con query session o query user ) en los servidores que ya les seteo dentro del bat y devuelve el resultado "el usuario esta logeado en X equipo".
Luego deberia darme las opciones por ejemplo para hacerle un logoff a ese usuario o bien hacer una nueva busqueda.

La primera parte, ya la realice , se me esta complicando para crear una variable que me permita poder hacer el "logoff"

Les comparto lo precario y novato que arme pero que funciona :)

Código (dos) [Seleccionar]
:inicio
@echo off
cd\
echo.
set srv01=%Temp%\srv01.txt
set /p User=Ingrese Nombre o Apellido de Usuario :
echo.
echo Consultando...
echo.
query session /server:SERVER | find /i "%User%" > %srv01%
echo.
@echo off
findstr "%User%" "%srv01%"
if %errorlevel%==0 (echo El usuario "%User%" esta logeado en SERVER01 ) else (echo No se encontro "%User%" logeado en SERVER01 )
echo.
@echo off
echo Seleccione una opcion
echo --------------------
echo.
echo A. Realizar Logoff
echo B. Buscar otro Usuario
echo C. Salir
echo.
choice /c:abc /n /M "Que desea hacer?"
if errorlevel 3 goto Salir
if errorlevel 2 goto Inicio
if errorlevel 1 goto Logoff


:Salir
exit

:logoff
ACAA COMO HAGOO

goto inicio
pause



Lo que devuelve el "query session" en el .txt es lo siguiente:

rdp-tcp#1         Usuario                    3  Active  rdpwd            

Donde el el "rdp-tcp#1" (session name) es lo que varia junto a  "3" ( id )

Yo necesitaria unir ese "session name" a "Usuario" y poder hacer un "logoff SESSIONNAME /server:SERVER01"

No se si me exprese bien, pero desde ya agradezco el tiempo de vosotros

Meine programmen

#1
Si no entiendo mal, lo que buscas es meter en una variable el session name, y a partir de ahi tu ya sabes hacer el logoff, ¿no? De ser así, el codigo quedaria mas o menos asi:


@echo off
:inicio
cd\
echo.
set srv01=%Temp%\srv01.txt
set /p User=Ingrese Nombre o Apellido de Usuario :
echo.
echo Consultando...
echo.
query session /server:SERVER | find /i "%User%" > %srv01%
echo.
findstr "%User%" "%srv01%">>nul
if %errorlevel%==0 (echo El usuario "%User%" esta logeado en SERVER01 ) else (echo No se encontro "%User%" logeado en SERVER01 )
echo.
echo Seleccione una opcion
echo --------------------
echo.
echo A. Realizar Logoff
echo B. Buscar otro Usuario
echo C. Salir
echo.
choice /c:abc /n /M "Que desea hacer?"
if errorlevel 3 goto Salir
if errorlevel 2 goto Inicio
if errorlevel 1 goto Logoff


:Salir
exit

:logoff
for /f "tokens=1" %%a in ('type "%srv01%"') DO (set Sessionname=%%A)
(En esta linea introduces el comando para hacer el logoff)
pause
cls
goto inicio


Esto seria en caso de que el Session name no pudiera llevar espacios. Si llevase espacios habria que calentarse un poco mas la cabeza pero se podria hacer.
REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!


kriminal_27

Muchas gracias capo, la verdad que estoy un paso mas cerca, estoy investigando un poco porque el resultado que se guarda en el txt empieza justamente con 1 espacio en blanco y luego sigue el resto  :(
estoy viendo la posibilidad de en alguna parte del codigo meterle algo que "busque" el espacio en blanco y lo borre
otra cosa, mira asi es como me devuelve el query user:

usuario                                  73  Disc         1:17  27/04/2013 07:59 a.m.

con el tokens y delim puedo hacer que me leea el "73" ?? y pueda hacer un "logoff %var% donde el var corresponde al 73??

Chas graciasss

kriminal_27

#3
listo Meine programmen !!! ya funciona okkk !! le cambie que busque el numero de sesion mas que nombre de sesion.

quedo asi:

Código (dos) [Seleccionar]
for /f "tokens=2" %%a in ('type "%srv01%"') do (set SessionID=%%a)
logoff %SessionID% /server:serv01


Muchas gracias!


Eleкtro

@Kriminal_27
Lee las indicaciones de mi firma para no estar editando todos tus mensajes.

Un saludo!