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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8
51  Programación / Scripting / Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH) en: 23 Abril 2019, 12:21 pm
Hola!

Si ejeuctas el bat como admin, entonces el directorio actual cambia. Por eso el script no encuentra el archivo.

Si el txt esta en el mismo dir que el bat, entonces podrias usar %~dp0 para obtener el path completo al bat (sin el filename).

Mas info: https://stackoverflow.com/questions/4419868/what-is-the-current-directory-in-a-batch-file

Saludos!

Hola
El enunciado del script que me mandaron era así:

Ejercicio 11.
Crea un batch que, partiendo de un fichero, cree los usuarios especificados. El fichero
se denominará USUARIOS.TXT y sus registros seguirán el siguiente patrón
NOMRE:CONTRASEÑA. Se comprobará si el usuario existe. Si existe, no se crea y se informa. Si
no existe, se pide confirmación, se crea y se informa. Tras la creación de cada usuario se
pregunta si se desea continuar con el siguiente registro (mostrando el nombre de usuario a
crear) o abandonar.

Contenido del texto:

Citar
GILBERTO:GILBERTO
PEPITO:PEPITO
SAMSUNG:SAMSUNG
JUDASPRIEST:JUDASPRIEST
JOSEFINA:JOSEFINA
GABRIEL:GABRIEL

Bueno, yo hice el script siguiente:


Código
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. REM COMPROBAR PERMISOS
  4. NET SESSION >NUL 2>NUL
  5.    IF NOT ERRORLEVEL 1 (
  6.        GOTO :COMPROBAR
  7.    ) ELSE (
  8.        ECHO NO TIENES PERMISO PARA USAR ESTE FICHERO && PAUSE>NUL && EXIT
  9.    )
  10. :COMPROBAR
  11. FOR /F "TOKENS=1,2 DELIMS=:" %%A IN (C:\Users\alumno\Desktop\USUARIOS.txt) DO (
  12.    NET USER %%A >NUL 2>NUL
  13.        IF NOT ERRORLEVEL 1 (
  14.            ECHO EL USUARIO %%A YA EXISTE && PAUSE>NUL
  15.        ) ELSE (
  16.            ECHO ========================
  17.            ECHO EL USUARIO %%A NO EXISTE
  18.            ECHO 1- CREAR
  19.            ECHO 2- SALIR
  20.            ECHO ========================
  21.            SET /P OPT="QUE DESEA HACER? >"
  22.            IF !OPT! EQU 1 (
  23.                NET USER %%A %%B /ADD >NUL && ECHO EL USUARIO %%A SE HA CREADO && TIMEOUT 1 /NOBREAK >NUL
  24.            )
  25.            IF !OPT! EQU 2 (
  26.                ECHO SALIENDO DEL PROGRAMA... && PAUSE>NUL && EXIT
  27.            )
  28.        )
  29. )
  30. PAUSE>NUL
  31.  

Funcionar, funciona perfectamente
pero solo si fichero USUARIOS.txt se encuentra en el escritorio
y el usuario es alumno. (C:\users\alumno....)
Que pasaría si el batch me lo llevo a otra computadora.
Habría que cambiarle la ruta completa en el contenido del FOR
C:\Users\alumno\Desktop\USUARIOS.txt
o habría otra forma ??
Lo digo porque al ejecutarlo como administrador, el directorio actual cambia.
Y es obvio que si me lo llevo a otra computadora el directorio del texto lo debo cambiar
Yo quiero que el mismo batch se encuentre en la misma carpeta que el fichero USUARIOS.txt
Que habría que modificarle al script?
%~dp0 ?
52  Programación / Scripting / Re: Se puede hacer un IF dentro de un ELSE?? (BATCH) en: 22 Abril 2019, 20:39 pm
Saludos,

- Las variables en Bacth tienen un comportamiento inusual cuando se ejecutan en sentencias de una sola línea como sentencia & sentencia, o sentencia | sentencia, etc, las sentencias que van entre paréntesis se consideran que van en línea.

- Ese comportamiento inusual hace que las variables  no actualicen sus valores, se le asigna un valor la primera vez y luego no se notarán siguientes cambios hasta que termine la sentencia en línea.

- Para solucionar esto se utiliza SETLOCAL EnableDelayedExpansion, esto hace que las variables si se actualicen tal como se espera, pero las variables deben cambiar su notación %variable% por !variable!.

- Recuerda que para SET /A no es necesario utilizar %variable% o !variable!, esto se sobreentiende.

Código
  1. @ECHO OFF
  2. SETLOCAL EnableDelayedExpansion
  3. SET NUM1=1
  4. SET NUM2=2
  5. SET OPT=
  6. SET SUM=
  7. IF !NUM1!==!NUM2! (
  8.    ECHO SON IGUALES
  9. ) ELSE (
  10.    ECHO NO SON IGUALES
  11.    ECHO PEQUENIO MENU CON DOS OPCIONES
  12.    ECHO 1- SUMAR
  13.    ECHO 2- SALIR
  14.    SET /P OPT="SELECCIONA UNA OPCION > "
  15.    IF "!OPT!"=="1" GOTO A
  16.    IF "!OPT!"=="2" GOTO B
  17. )
  18.  
  19. :A
  20. SET /A SUM=NUM1 + NUM2
  21. ECHO EL RESULTADO DE 1 + 2 ES !SUM!
  22. PAUSE>NUL && EXIT
  23.  
  24. :B
  25. ECHO SALIENDO DEL PROGRAMA && PAUSE>NUL && EXIT
  26. PAUSE>NUL

- Otra forma es usando CALL. Ver el comportamiento de todo esto en:
https://ss64.com/nt/delayedexpansion.html

Muchas gracias por tu ayuda.
53  Programación / Scripting / Re: Se puede hacer un IF dentro de un ELSE?? (BATCH) en: 22 Abril 2019, 18:57 pm
Mejoré 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 1- SUMAR
  12.    ECHO 2- SALIR
  13.    SET /P OPT="SELECCIONA UNA OPCION > "
  14.    IF "%OPT%"=="1" GOTO A
  15.    IF "%OPT%"=="2" GOTO B
  16. )
  17.  
  18. :A
  19. SET /A SUM= %NUM1% + %NUM2%
  20. ECHO EL RESULTADO DE 1 + 2 ES %SUM%
  21. PAUSE>NUL && EXIT
  22.  
  23. :B
  24. ECHO SALIENDO DEL PROGRAMA && PAUSE>NUL && EXIT
  25. PAUSE>NUL

Y no me funciona
en ambos casos me manda hacia A
aunque ponga B
54  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%"
55  Programación / Scripting / Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH) en: 22 Abril 2019, 16:55 pm
Hola!

Si ejeuctas el bat como admin, entonces el directorio actual cambia. Por eso el script no encuentra el archivo.

Si el txt esta en el mismo dir que el bat, entonces podrias usar %~dp0 para obtener el path completo al bat (sin el filename).

Mas info: https://stackoverflow.com/questions/4419868/what-is-the-current-directory-in-a-batch-file

Saludos!

Hola, gracias por contestar
no habría otra forma de hacer esto?
es que eso que mencionas tú no lo hemos visto en clase
y si le pongo cosas que no hayamos visto en clase mi profesor no lo valorará
por muy asqueroso que parezca
56  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é??
57  Programación / Scripting / Re: Intercambiar valores de dos variables (batch) --ayuda-- en: 21 Abril 2019, 21:25 pm
Saludos,

- Utilizar comillas implica comparar String (texto), en este caso se ordena de menor a mayor 0-9 A-Z a-z, por esto "a" < "b" y "10" < "5"

- Los operadores de comparación EQU, NEQ, LSS, LEQ, GTR, GEQ son usados para comparar números tal cual y los números no van entre comillas.


muchas gracias
58  Programación / Scripting / Re: Intercambiar valores de dos variables (batch) --ayuda-- en: 21 Abril 2019, 13:59 pm
Con este script que hice aparte si me funciono

Código
  1. @ECHO OFF
  2. SET NUM1=
  3. SET NUM2=
  4. SET /P NUM1="DAME UN NUMERO> "
  5. SET /P NUM2="DAME OTRO NUMERO> "
  6. IF %NUM1% GTR %NUM2% (
  7.    ECHO EL NUMERO %NUM1% ES MAYOR QUE %NUM2%
  8.    SET NUM1=%NUM2%
  9.    SET NUM2=%NUM1%
  10. )
  11. ECHO NUMERO1= %NUM1%
  12. ECHO NUMERO2= %NUM2%
  13. PAUSE>NUL

Lo que estropeaba el script eran las comillas 
"%NUM1%" GTR "%NUM2%"
alguien me puede decir por qué?
mi profesor siempre usa comillas en las variables...
59  Programación / Scripting / Re: Intercambiar valores de dos variables (batch) --ayuda-- en: 21 Abril 2019, 13:51 pm
Hola al parecer todo funcionaba
hasta que meto como primer número un [10-19]
y como segundo numero uno menor a estos





No sé cómo arreglar esto

numero 1: 10
numero 2: 5
se supone que numero 10 es mayor que 5
pero el batch no lo detecta. ayuda por favor.
60  Programación / Scripting / Re: Intercambiar valores de dos variables (batch) --ayuda-- en: 21 Abril 2019, 12:38 pm
Hola
me vuelvo a responder otra vez
la cuestión estaba en los paréntesis
que toma como una sola línea todo lo que hay dentro de él.
saludos
Páginas: 1 2 3 4 5 [6] 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines