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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: 1 2 [3]
21  Programación / Scripting / Se puede hacer un IF dentro de un ELSE?? (BATCH) en: 22 Abril 2019, 18:03 pm
He estado haciendo un script para creación de usuarios desde el contenido de un archivo de texto plano y estoy sospechando de que no me sale por poner un IF después de un ELSE. Así que hice un script más simple aparte para comprobar si esto era cierto
aquí el script:

Código
  1. @ECHO OFF
  2. SET NUM1=1
  3. SET NUM2=2
  4. SET OPT=
  5. SET SUM=
  6. IF %NUM1%==%NUM2% (
  7.    ECHO SON IGUALES
  8. ) ELSE (
  9.    ECHO NO SON IGUALES
  10.    ECHO PEQUENIO MENU CON DOS OPCIONES
  11.    ECHO A- SUMAR
  12.    ECHO B- SALIR
  13.    SET /P OPT="SELECCIONA UNA OPCION > "
  14.    IF "%OPT%"=="A" (
  15.        SET /A SUM= %NUM1% + %NUM2%
  16.        ECHO EL RESULTADO DE 1 + 2 ES %SUM%
  17.    )
  18.    IF "%OPT%"=="B" (
  19.        ECHO SALIENDO DEL PROGRAMA && PAUSE>NUL && EXIT
  20.    )
  21. )
  22.  
  23. PAUSE>NUL
El script funciona correctamente hasta llegar al apartado del IF "%opt%"
22  Programación / Scripting / Problema al crear usuarios desde el contenido de un fichero de texto (BATCH) en: 22 Abril 2019, 16:24 pm
Tengo este archivo de texto plano
Citar
PEPITO:PEPITO
SAMSUNG:SAMSUNG
JUDASPRIEST:JUDASPRIEST
HOJA:HOJA
CAMA:ALMOHADA
USUARIO1:USUARIO2

El primer campo son los nombres de usuarios y el segundo son las contraseñas.
El caracter delimitador es el símbolo ':'
A partir de esto debo crear cuentas de usuario en windows mediante un script de batch
yo he hecho esto

Código
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. FOR /F "TOKENS=1,2 DELIMS=:" %%A IN (USUARIOS.txt) DO (
  4.    ECHO USUARIO: %%A CON: %%B
  5. )
  6. PAUSE>NUL

RESULTADO
Citar
USUARIO: PEPITO CON: PEPITO
USUARIO: SAMSUNG CON: SAMSUNG
USUARIO: JUDASPRIEST CON: JUDASPRIEST
USUARIO: HOJA CON: HOJA
USUARIO: CAMA CON: ALMOHADA
USUARIO: USUARIO1 CON: USUARIO2

Ahora bien
si agrego el comando NET USER para agregar cuentas en el sistema operativo:


Código
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3.  
  4. FOR /F "TOKENS=1,2 DELIMS=:" %%A IN (USUARIOS.txt) DO (
  5.    ECHO USUARIO: %%A CON: %%B
  6.    NET USER %%A %%B /ADD
  7. )
  8. PAUSE>NUL

ejecuto el script para tener derechos y el resultado es el siguiente:

El sistema no puede encontrar el archivo USUARIOS.txt.

Por qué??
23  Programación / Scripting / Intercambiar valores de dos variables (batch) --ayuda-- en: 21 Abril 2019, 11:49 am
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
  1. REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
  2. IF "%NUM1%" GTR "%NUM2%" (
  3.    SET VARTEMP=%NUM1%
  4.    SET NUM1=%NUM2%
  5.    SET NUM2=%VARTEMP%
  6. )
  7.    ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
  8.  
  9.  
  10. 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
  1. @echo off
  2. REM EJERCICIO 10
  3. REM COMPROBAR SI EL QUE ABRE ESTE ARCHIVO ES ADMINISTRADOR O UN USUARIO SIN PERMISOS
  4. NET SESSION >NUL 2>NUL
  5.    GOTO :INICIO
  6. )
  7.    ECHO NO TIENES PERMISOS PARA USAR ESTE ARCHIVO && PAUSE>NUL && EXIT
  8. )
  9. REM EMPEZAMOS
  10. :inicio
  11. SET NUM1=
  12. SET NUM2=
  13. SET NOMBRE=
  14. CLS
  15. echo ==================================
  16. echo Creacion de usuarios automatizado
  17. echo ==================================
  18. set /p nombre="Nombre de usuario > "
  19. IF "%NOMBRE%"=="" (
  20.    ECHO DEBES EMPEZAR CON UNA CADENA DE TEXTO && PAUSE>NUL
  21.    GOTO INICIO
  22. )
  23. REM PEDIR PRIMER NUMERO
  24. :NUM1
  25. set /p num1="Primer Numero > "
  26. IF "%NUM1%"=="" (
  27.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
  28. )
  29. set /a var=%num1%
  30. IF NOT "%VAR%"=="%NUM1%" (
  31.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM1
  32. )
  33. :NUM2
  34. REM PEDIR SEGUNDO NUMERO
  35. SET /P NUM2="Segundo Numero > "
  36. IF "%NUM2%"=="" (
  37.    ECHO DEBES DARME UN SEGUNDO NUMERO && PAUSE>NUL && GOTO :NUM2
  38. )
  39. set /a var2=%num2%
  40. IF NOT "%VAR2%"=="%NUM2%" (
  41.    ECHO DEBES DARME UN NUMERO && PAUSE>NUL && GOTO :NUM2
  42. )
  43. REM PERMUTAS LAS VARIBLES NUM. SI EL PRIMER NUMERO ES MAYOR CAMBIARLO A LA VARIABLE NUM2
  44. IF "%NUM1%" GTR "%NUM2%" (
  45.    SET VARTEMP=%NUM1%
  46.    SET NUM1=%NUM2%
  47.    SET NUM2=%VARTEMP%
  48. )
  49.    ECHO NUM1=%NUM1% VARTEMP=%VARTEMP% NUM2=%NUM2%
  50.  
  51.  
  52. PAUSE>NUL
  53.  
24  Programación / Programación General / Cual es la diferencia entre estos dos scripts (batch) en: 20 Abril 2019, 12:08 pm
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 ()

Código:
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?

25  Programación / Programación General / Crear usuarios con un batch en: 19 Abril 2019, 23:46 pm
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

Código:
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.
26  Programación / Programación General / Capturar el valor de un errorlevel (batch) en: 18 Abril 2019, 10:19 am
Quiero crear un script para crear usuarios desde un .bat

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

Código:
@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é??

27  Programación / Programación General / Como pongo el símbolo del porcentaje en un echo (BATCH) en: 17 Abril 2019, 19:53 pm
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
  1. echo CARGANDO TABLA DE MULTIPLICAR %%a%... && timeout 1 /nobreak >nul
  2.  
28  Programación / Programación General / Duda sobre batch. (Else) en: 4 Abril 2019, 20:10 pm
Una duda
solo quiero saber si se puede usar un else dentro de un for
porque me anda tirando errores el script
y creo que el profesor ya lo había comentado en clase
29  Programación / Programación General / ayuda programacion batch: uso del for /f en: 3 Abril 2019, 22:31 pm
me han mandado el siguiente ejercicio:

Crea un fichero batch que muestre el siguiente menú
BUSQUEDA DE REGISTROS
1.- Nombre
2.- Apellido
3.- Teléfono
4.- Salir
La opción 1 pedirá un valor. Buscará en el fichero AGENDA.TXT, en el campo nombre
cualquier registro que contenga la cadena especificada. Ejemplo: si busco BE, localizará los
registros BERTA, ALBERTO, ABELARDO… Por cada registro encontrado mostrará:
Nombre
NOMBRE
Apellido
APELLIDO
Teléfono
TELEFONO
Los diferentes registros se separarán por una línea de guiones.
La opción 2 y 3 funcionan de forma similar.
La opción 4 vacía las variables y sale del programa.


el contenido del fichero es el siguiente:


jose:morales:41254
bob:dylan:124544
pepito:jimenez:6651454
susana:ochoa:124454
guillermo:paredes:4575
susel:roca:21145
tomas:palermo:4544


y mi codigo es el siguiente:


Código:
@echo off
rem ejercicio 9
setlocal enabledelayedexpansion
:menu
set nomb=
cls
echo -------------------------
echo - BUSQUEDA DE REGISTROS -
echo -------------------------
echo.
echo 1. Nombre
echo 2. Apellido
echo 3. Telefono
echo 4. Salir
echo.
:opt
set opt=
set /p opt="Selecciona una opcion: "
if /i "%opt%"=="1" goto opt1
if /i "%opt%"=="2" goto opt2
if /i "%opt%"=="3" goto opt3
if /i "%opt%"=="4" goto opt4
echo la opcion no es valida
pause>nul
goto menu
:opt1
set /p nomb="Buscar campo nombre: "

for /F "tokens=1,2,3 delims=:" %%a in (agenda.txt) do (
    echo %%a %%b %%c | find "%nomb%"
)
pause>nul
goto menu
:fin

obviamente solo esta hecho hasta la primera parte
pero mi problema es que no funciona tal como me lo piden

ya que el resultado seria

NOMBRE:APELLIDO:TELEFONO
y a mi me lo piden de otra manera

nombre
NOMBRE
apellido
APELLIDO
telefono
TELEFONO

no sé como extraer el %%b ni el %%c en otro echo ya que ya no es posible usar el

Código:
|echo %%b find %nomb% 

ya que ni en el segundo token ni en el tercero no hay nada que coincida con %nomb%
no se como hacerlo.... necesito ayuda, por favor
30  Programación / Programación General / Programación en batch. Comparar una cadena con un entero en: 14 Marzo 2019, 20:35 pm
Hola
estoy empezando en esto de programar, estudio primero de Asir
y tengo una duda con la programación con archivos.bat
quiero que el usuario pueda poner un valor a una variable
sé que esto se logra con un set /p
sin embargo, quiero que los valores estén restringidos solo a números, no a cadenas te textos

set /p num="dame un numero"

obvio pues si el usuario pusiese una letra
no podría hacer operaciones aritmética con dicho valor. saludos
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines