Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - juntacadaveres

#61
Hola ya me respondo yo mismo otra vez
no hacía falta utilizar otra variable para intercambiar las dos primeras
bastaba con hacer esto

Código (dos) [Seleccionar]
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
   SET NUM1=%NUM2%
   SET NUM2=%NUM1%
)


Joder
pero no entiendo por qué funciona el código

si num1=%num2%
y  luego hago
num2=%num1% >>>>>>>>>> pero %num1% era %num2%
entonces num2 = %num2%

no entiendo por qué esto funciona
aunque haga lo que yo quería que hiciese
no debería funcionar...
ayuda

Citar==================================
Creacion de usuarios automatizado
==================================

Nombre de usuario > LUIS
Primer Numero > 7
Segundo Numero > 5
NOMBRE=LUIS NUM1=7 NUM2=5
INTERCAMBIO DE VARIABLES:
NOMBRE=LUIS NUM1=5 NUM2=7

#62
No sé qué hago mal....
llevo ya un par de horas intentado resolver este problema
el batch me pedirá dos números pero el primero debe ser menor que el segundo
por eso hago un intercambio de variables
ejemplo
dame un numero: 10
dame otro numero: 7
num1=10
num2=7

intecambio
num1=7
num2=10

he hecho esto pero no sé por qué demonios no me funciona
ayuda por favor

Código (dos) [Seleccionar]
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
   SET VARTEMP=%NUM1%
   SET NUM1=%NUM2%
   SET NUM2=%VARTEMP%
)
   ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%


PAUSE>NUL



Citar==================================
Creacion de usuarios automatizado
==================================

Nombre de usuario > LUIS
Primer Numero > 7
Segundo Numero > 5
NUM1=5 VARTEMP=7 NUM2=


Aqui el script completo

Código (dos) [Seleccionar]
@echo off
REM EJERCICIO 10
REM COMPROBAR SI EL QUE ABRE ESTE ARCHIVO ES ADMINISTRADOR O UN USUARIO SIN PERMISOS
NET SESSION >NUL 2>NUL
IF NOT ERRORLEVEL 1 (
    GOTO :INICIO
)
IF ERRORLEVEL 1 (
    ECHO NO TIENES PERMISOS PARA USAR ESTE ARCHIVO && PAUSE>NUL && EXIT
)
REM EMPEZAMOS
:inicio
SET NUM1=
SET NUM2=
SET NOMBRE=
CLS
echo ==================================
echo Creacion de usuarios automatizado
echo ==================================
echo.
set /p nombre="Nombre de usuario > "
IF "%NOMBRE%"=="" (
    ECHO DEBES EMPEZAR CON UNA CADENA DE TEXTO && PAUSE>NUL
    GOTO INICIO
)
REM PEDIR PRIMER NUMERO
:NUM1
set /p num1="Primer Numero > "
IF "%NUM1%"=="" (
    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
)
set /a var=%num1%
IF NOT "%VAR%"=="%NUM1%" (
    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
)
:NUM2
REM PEDIR SEGUNDO NUMERO
SET /P NUM2="Segundo Numero > "
IF "%NUM2%"=="" (
    ECHO DEBES DARME UN SEGUNDO NUMERO && PAUSE>NUL && GOTO :NUM2
)
set /a var2=%num2%
IF NOT "%VAR2%"=="%NUM2%" (
    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM2
)
REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
IF "%NUM1%" GTR "%NUM2%" (
    SET VARTEMP=%NUM1%
    SET NUM1=%NUM2%
    SET NUM2=%VARTEMP%
)
    ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%


PAUSE>NUL
#63
Hola no hace falta que contesten. Ya lo averigué. Los paréntesis en el primero sobran.
#64
Cita de: EdePC en 20 Abril 2019, 01:58 AM
Saludos,

- Lo más simple es hacer el chequeo sobre los permisos de administrador mediante otro comando, por ejemplo se usa bastante net session >Nul 2>&1

- Puedes ver los detalles en este enlace:
https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights

Hola muchas gracias
al final el script me quedó así:

Código ("dos") [Seleccionar]
@echo off
setlocal enabledelayedexpansion
echo ======================
echo  Creacion de usuarios
echo ======================
echo.
rem COMPROBAR SI EL USUARIO QUE ABRE EL FICHERO ES ADMINISTRADOR
net session >NUL 2>NUL
   IF NOT ERRORLEVEL 1 (
       GOTO CREACION
   )
    IF ERRORLEVEL 1 (
        ECHO NO TIENE PERMISOS PARA USAR ESTE FICHERO
        PAUSE>NUL
        GOTO SALIDA
    )

:CREACION
SET /P NOMBRE="NOMBRE DE USUARIO A SER CREADO > "
NET USER %NOMBRE% /ADD >NUL 2>NUL
   IF NOT ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% HA SIDO CREADO EXITOSAMENTE
       GOTO SALIDA
   )
   IF ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% YA EXISTE
       PAUSE>NUL
       CLS
       GOTO CREACION
   )

:SALIDA
FOR /L %%A IN (3,-1,1) DO (
   echo EL PROGRAMA SE CERRA EN %%A SEGUNDOS... && TIMEOUT 1 /NOBREAK >NUL
)
EXIT
#65
SET /P NOMBRE="NOMBRE DE USUARIO A SER CREADO > "
NET USER %NOMBRE% /ADD >NUL 2>NUL (
   IF NOT ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% HA SIDO CREADO EXITOSAMENTE
       GOTO SALIDA
   )
   IF ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% YA EXISTE
       PAUSE>NUL
       CLS
       GOTO CREACION
   )


y...... en este que no tiene paréntesis después del 2>nul ()

SET /P NOMBRE="NOMBRE DE USUARIO A SER CREADO > "
NET USER %NOMBRE% /ADD >NUL 2>NUL
   IF NOT ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% HA SIDO CREADO EXITOSAMENTE
       GOTO SALIDA
   )
   IF ERRORLEVEL 1 (
       ECHO EL USUARIO %NOMBRE% YA EXISTE
       PAUSE>NUL
       CLS
       GOTO CREACION
   )


En los paréntesis esos
afecta algo?

#66
Hola he mejorado el script

Código ("batch") [Seleccionar]
@echo off
setlocal enabledelayedexpansion
@echo. && echo ==================== && echo creacion de usuarios && echo ==================== && echo.
set /p nombre="Nombre de usuario> "
net user %nombre% /ADD >nul (
   IF ERRORLEVEL 2 (
       echo ALGO SALIO MAL
   )

   IF NOT ERRORLEVEL 1 (
       echo EXITOSO
   )
)
   
pause>nul


Pero no sé cómo hacer el echo específico cuando sea el usuario sin permisos quien abra el batch
y el echo específico cuando el usuario a crear ya existe
además de borrar este mensaje al realizar el comando net user


====================
creacion de usuarios
====================

Nombre de usuario> lola
Error de sistema 5.

Acceso denegado.

No tienes permisos o no eres administrador

#67
Me han mandado hacer un script de batch para crear usuarios
pero con unos matices:

-si el usuario que abre el script no es administrador
debe aparecer un echo diciendo que no tiene permisos y se cierre la consola

-si el que lo abre es el administrador y la cuenta no existe
que aparezca un echo anunciando que la operación se realizó exitosamente

-el administrador abre el script pero ya existe el usuario.
echo el usuario a crear ya existe

Bien, aquí el problema son los errorlevels
-Si un usuario es creado el valor del errorlevel es cero
-Si un usuario que no es administrador intenta crear un usuario con el script el valor del errorlevel es un dos
-Si un administrador intenta crear un usuario que ya existe mediante el script el errorlevel también me da un dos

BUENO
Sabiendo que en dos situaciones el errorlevel es de dos. ya no sé cómo seguir.. ni empezar

set /p usuario=Nombre de usuario a crear >
net user %usuario% /add && echo usuario creado || echo (el usuario ya existe | no eres administrador)


Pero yo quiero hacerlo mediante errorlevels

IF %ERRORLEVEL% EQU 2  (
ECHO NO ERES ADMINISTRADOR
)

IF %ERRORLEVEL% EQU 2  (
ECHO EL USUARIO YA EXISTE
)

pero ambos casos los valores son 2. No sé cómo seguirla. Estoy aprendiendo batch.
#68
Hola bueno me respondo a mí mismo porque ya sé cómo hacerlo
y es interceptándolos desde el mismo terminal CMD

C:\Users\alumno>net user /add pakito
Error de sistema 5.

Acceso denegado.


C:\Users\alumno>echo %errorlevel%
2

C:\Users\alumno>

#69
Quiero crear un script para crear usuarios desde un .bat

y estoy usando este método para interceptar los valores de la variable %errorlevel%

@echo off
setlocal enabledelayedexpansion
@echo. && echo ==================== && echo creacion de usuarios && echo ==================== && echo.
set /p nombre="Nombre de usuario> "
net user %nombre% /ADD && echo %errorlevel% || echo el valor de errorlevel es un %errorlevel%
pause>nul


el errorlevel siempre me da como valor un cero y no sé por qué
o sea,
primera situación. el administrador abre el fichero y crea un usuario exitosamente
errorlevel 0?
segunda situación. alguien que no es administrador abre el fichero, pero al no ser administrador no puede crear usuarios. por lo tanto le aparecerá un mensaje que no es administrador. y el errorlevel debe ser distinto de cero, SUPONGO, pero al hacer el echo de %errorlevel% aparece 0
tercera situación. el usuario a crear ya existe. Muestro con un echo el valor de %errorlevel% y me sigue dando cero. Por qué??

#70
Hola, cuál es la forma de que haciendo un echo me muestre el símbolo %
pues como batch maneja el tema de las variables con porcentajes
supongo que de forma convencional no ses puede...


Código ("batch") [Seleccionar]
echo CARGANDO TABLA DE MULTIPLICAR %%a%... && timeout 1 /nobreak >nul