Problema con cambiarle el nombre a un grupo (vía Batch)

Iniciado por VivaElPirateo, 28 Mayo 2012, 03:17 AM

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

Eleкtro

@VivaelPirateo

Debe ser causa de la versión de Windows, En windows 7 funciona todo como debe funcionar.

No puedo buscar la causa del choice ni del error porque no tengo a mano WinServer 2008 xD,
Pero lo puedes hacer tú mismo, dices que no se elimina el grupo, Pues sespues del "Todo ok?(s)" abre la consola y usa directamente este comando, y así ves el error de porque no se ha podido borrar:

Código (dos) [Seleccionar]
net localgroup "NOMBRE DEL GRUPO" /delete

saludos








VivaElPirateo

#11
Puse ese comando en la consola y borra el grupo sin ningún problema.

Cuando ejecuto el script y sale lo del "todo ok"  presiono la s  y alcanzo a ver que sale algo así como:

"la sintaxis del comando..."


Creo que acá debe haber un error en estas líneas de código:

Choice /M "Todo OK?"
If %Errorlevel%==1 (

:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"

) ELSE (
:: Mostramos el backup de los usuarios para deshacer los cambios manualmente xD.

notepad "%temp%\%del%_usuarios.txt"

)

exit



Si logro resolver esto luego, posteo.

Salu2





Lo tuve que dejar de la siguiente forma:


@Echo off


:Select
Echo Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE

set /p del=^>^>

If not defined del (goto :select)

Net localgroup "%DEL%" >nul 2>&1 || (Echo. El grupo "%DEL%" no existe! | MORE & Set "Del=" & Goto :Select)


Echo+ & Echo ingrese nuevo nombre: | MORE

set /p add=^>^>
If not defined add (goto :select)


:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"


:: Creamos el nuevo grupo:
net localgroup "%add%" /add >nul


:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (

net localgroup "%add%" /add "%%a" >NUL

)

CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE

Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE


:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"
echo.
echo.
echo          El nombre del grupo se ha modificado correctamente!!!
echo.
echo.
pause
cls
Goto :select



Gracias y millón de bendiciones Elektro Hacker!!!!



A todo esto:

Existe alguna forma de que no se caiga el programa al insertar un espacio o signos como " espacios & ???



Eleкtro

Cita de: VivaElPirateo en  5 Junio 2012, 07:08 AM
A todo esto:

Existe alguna forma de que no se caiga el programa al insertar un espacio o signos como " espacios & ???

Ya empezamos...  :xD  :P

Pues sí, Usa findstr tal y como te lo expliké en otra duda tuya.

Código (dos) [Seleccionar]
PREGUNTA
Echo "%PREGUNA%" | FINDSTR...


PD: Prueba, Si no te sale, te ayudo.

Saludos









VivaElPirateo

Hola Elektro H@cker:

He realizado algunos cambios al script:

@echo off

:cambiarnombregrupo

echo.
echo.
echo                Ingrese nombre del Grupo al que va a cambiar de nombre: | MORE


set /p del=               ^>^>


Set "del=%del:^"=%" & REM "

echo.
echo.

Net localgroup "%DEL%" >nul 2>&1 || (Echo.               El grupo ingresado no existe! | MORE & Set "Del=" & Goto :cambiarnombregrupo)

echo.
echo.
Echo+ & Echo                ingrese nuevo nombre: | MORE

set /p add=               ^>^>


If not defined add (goto :cambiarnombregrupo)


:: Pasamos la lista d los miembros a un archivo de texto, por si las moscas, para que no se pierda :P
net localgroup "%del%">"%temp%\%del%_usuarios.txt"


:: Creamos el nuevo grupo:
net localgroup "%add%" /add >nul


:: Obtenemos los usuarios del grupo que queremos borrar, Y los vamos añadiendo al nuevo grupo
For /F "tokens=*" %%a in ('net localgroup "%del%" ^| findstr /V /R "Comentario Miembros ----- Nombre.de.alias Se.ha.completado"') do (

net localgroup "%add%" /add "%%a" >NUL

)

CLS & Echo+ & Echo [+] Su nuevo grupo: | MORE

Net localgroup "%ADD%" | findstr /V /R "Comentario ----- Se.ha.completado"| MORE


:: Eliminamos el grupo anterior y el backup de los usuarios.
net localgroup "%del%" /delete >NUL

Del /Q "%temp%\%del%_usuarios.txt"
echo.
echo.
echo          El nombre del grupo se ha modificado correctamente!!!
echo.
echo.
pause
cls
Goto :cambiarnombregrupo



Todo bien por el momento, pero en la parte que dice: "Ingrese nuevo nombre", me da errores si pongo comillas o signo igual, me da esos errores.

Eleкtro

Cita de: VivaElPirateo en 13 Junio 2012, 07:04 AM
me da errores si pongo comillas o signo igual

Esto arregla lo de las comillas:
Código (dos) [Seleccionar]
Set "del=%del:"=%" & REM "

El signo = no debería dar error al setear mostrar la variable (Ni antes ni ahora xD).

Saludos








VivaElPirateo

#15
Fenomenal master!!!

Me ha resultado súper bien.

Millón de felicitaciones y millón de gracias por tu incondicional ayuda, Elektro H@cker!!!!!!!

Abrazos!!!


Otra duda:

Cómo soluciono para que, cuando aprete ENTER, no me de errores y me devuelva al inicio de esto???

ngrese nuevo nombre: | MORE


set /p add=               ^>^>


Set "add=%add:"=%" & REM "


If not defined add (goto :cambiarnombregrupo)


Así dejé el código y con esto solucioné lo de las comillas y espacios en blanco.

Eleкtro

No queda muy limpio el code por la triple comprobación, pero funciona:

Código (dos) [Seleccionar]
@Echo OFF

:cambiarnombregrupo
echo Ingrese nuevo nombre: | MORE

set /p ADD=                   ^>^>

If not defined ADD (goto :cambiarnombregrupo)
iF DEFINED ADD (Set "add=%add:"=%") & REM "
If not defined ADD (goto :cambiarnombregrupo)

rem PD: No pongas el "if defined" arriba del primer "if not defined" ;)

Pause

Exit








VivaElPirateo

Millón de gracias nuevamente master!!!!!!!!!!

Lo pruebo y luego te cuento!!!