Buenas:
Intento cambiarle el nombre a un localgroup de Windows Server 2003 a través de un batch.
Me genera error y no logro realizar lo que quiero hacer.
Dejo el código para que me ayuden, por favor:
:cambiarnombre
echo.
set /p nus= Ingrese grupo :
echo.
set /p nux= Ingrese NUEVO nombre al grupo :
echo.
net localgroup %nus% /fullname:"%nux%"
echo.
pause
goto grupos
Se agradece cualquier ayuda.
Fijate si lo haces sin poner las comillas en /fullname:"%nux%"
Parece que solo permite añadir un grupo, eliminar un grupo, o expandir (Añadir usuarios al grupo), Pero no modificar el nombre de un grupo....
Lo que puedes hacer es obtener la lista de los usuarios del grupo, Eliminar el grupo, y crearlo de nuevo con el nombre que quieras, y los usuarios que estaban.
http://technet.microsoft.com/en-us/library/cc725622%28v=ws.10%29.aspx
Cita de: Microsoft<GroupName>
Specifies the name of the local group to add, expand, or delete.
Además... :
C:\>net localgroup /?
La sintaxis de este comando es:
NET LOCALGROUP
[grupo [/COMMENT:"texto"]] [/DOMAIN]
grupo {/ADD [/COMMENT:"texto"] | /DELETE} [/DOMAIN]
grupo nombre [...] {/ADD | /DELETE} [/DOMAIN]
PD: Prueba a hacerlo desde el gpetid.msc, Si desde ahí tampoco se puede, Olvídate.
Saludos
Gracias socitos!!!!!!!!!!!!
Lo que yo hice ahora para solucionar el problema del cambio de nombre (parece que en realidad no se puede hacer), es darle una solución alternativa:
:cambiarnombre
set /p nus=Ingrese nombre del Grupo al que va a cambiar de nombre:
echo.
set /p nux=ingrese nuevo nombre:
echo.
net group %nus% /delete
net group %nux% /add /domain
echo.
pause
cls
goto grupos
Con esto, borro el grupo exitente (por ponerle un nombre: alfa, y crea otro nuevo grupo llamado beta), pero lo de reintegrar a los usuarios del grupo alfa al beta, eso quedé en tragedia.
:huh:
copiame el output de este comando (No tengo grupo yo para mirarlo :P):
net LOCALGROUP alfa
Y con un FOR hago el resto.
PD: Si ese comando no lista los miembros del grupo, prueba con otra opcion (NEt /?)...
Saludos
Buenas:
Me imagino que log te refieres a cuando ingresas en línea de comandos y escribes net users, no???
Acá está:
Se llama alfa1 el usuario
Microsoft Windows [Versión 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrador>net localgroup alfa1
Nombre de alias alfa1
Comentario
Miembros
-------------------------------------------------------------------------------
bullalbo1
johnritter1
panzer1
Se ha completado el comando correctamente.
Mira a ver si todo está en orden :P, Quizás he cometido algún error pues no puedo probar nada con grupos locales:
@Echo off
set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
set /p add=ingrese nuevo nombre:
:: 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"
:: 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"') do (
REM Echo Comando: net group "%add%" /add "%%a"
net group "%add%" /add "%%a"
)
:: Eliminamos el grupo anterior
net group "%del%" /delete
pause
exit
Con respecto a lo anterior:
Le modifiqué lo de group y lo dejé como localgroup.
@Echo off
set /p del=Ingrese nombre del Grupo al que va a cambiar de nombre:
set /p add=ingrese nuevo nombre:
:: 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"
:: 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"') do (
REM Echo Comando: net localgroup "%add%" /add "%%a"
net localgroup "%add%" /add "%%a"
)
:: Eliminamos el grupo anterior
net localgroup "%del%" /delete
pause
exit
Me elimina el grupo, pero no me crea nada más.
Este es el log:
Ingrese nombre del Grupo al que va a cambiar de nombre:curajolo.cl
ingrese nuevo nombre: curita123
La sintaxis de este comando es:
NET LOCALGROUP
[nombregrupo [/COMMENT:"texto"]] [/DOMAIN]
nombregrupo {/ADD [/COMMENT:"texto"] | /DELETE} [/DOMAIN]
nombregrupo nombre [...] {/ADD | /DELETE} [/DOMAIN]
Se ha completado el comando correctamente.
Presione una tecla para continuar . . .
Ya esta, He echo el code testeandolo en una máquina virtual (En mi pc como ya dije, no puedo).
Aqui lo tienes:
@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
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
Output:
(http://img571.imageshack.us/img571/1623/prtscrcaptureq.jpg)
Saludos.
Wow, que maravilla!!!!!!!!!!!!!
Te felicito master!!!!!!!!!!
Después del "Todo OK?" S-N Se cae el programa.
Lo que no resulta es que el grupo anterior no se borra:
Se crea el nuevo grupo y se traspasan los usuarios de éste al nuevo, pero sigue dejando el grupo antiguo intacto.
@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:
net localgroup "NOMBRE DEL GRUPO" /delete
saludos
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 & ???
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.
PREGUNTA
Echo "%PREGUNA%" | FINDSTR...
PD: Prueba, Si no te sale, te ayudo.
Saludos
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.
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:
Set "del=%del:"=%" & REM "
El signo = no debería dar error al
setear mostrar la variable (Ni antes ni ahora xD).
Saludos
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.
No queda muy limpio el code por la triple comprobación, pero funciona:
@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
Millón de gracias nuevamente master!!!!!!!!!!
Lo pruebo y luego te cuento!!!