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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)  (Leído 3,683 veces)
juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
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é??


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #1 en: 22 Abril 2019, 16:31 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!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #2 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
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.174



Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #3 en: 22 Abril 2019, 17:02 pm »

Saludos,

- Entonces pon la ruta completa del fichero USUARIOS.txt (C:\Users\Usuario\Desktop\USUARIOS:txt) o has un CD a la carpeta del fichero. Recuerda que puedes usar variables internas como %SystemDrive%, %UserProfile%, etc
En línea

juntacadaveres

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #4 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 ?
« Última modificación: 23 Abril 2019, 12:30 pm por juntacadaveres » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.174



Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #5 en: 23 Abril 2019, 14:32 pm »

- Pues si no quieres usar %~dp0, como dije puedes usar variables predeterminsdas, por ejemplo "%UserProfle%\Desktop\" apunta siempre al Escritorio del Usuario Actual.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema al crear usuarios desde el contenido de un fichero de texto (BATCH)
« Respuesta #6 en: 23 Abril 2019, 16:35 pm »

Usando %~dp0

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. SET mypath=%~dp0
  12. FOR /F "TOKENS=1,2 DELIMS=:" %%A IN (%mypath%USUARIOS.txt) DO (
  13.    NET USER %%A >NUL 2>NUL
  14.        IF NOT ERRORLEVEL 1 (
  15.            ECHO EL USUARIO %%A YA EXISTE && PAUSE>NUL
  16.        ) ELSE (
  17.            ECHO ========================
  18.            ECHO EL USUARIO %%A NO EXISTE
  19.            ECHO 1- CREAR
  20.            ECHO 2- SALIR
  21.            ECHO ========================
  22.            SET /P OPT="QUE DESEA HACER? >"
  23.            IF !OPT! EQU 1 (
  24.                NET USER %%A %%B /ADD >NUL && ECHO EL USUARIO %%A SE HA CREADO && TIMEOUT 1 /NOBREAK >NUL
  25.            )
  26.            IF !OPT! EQU 2 (
  27.                ECHO SALIENDO DEL PROGRAMA... && PAUSE>NUL && EXIT
  28.            )
  29.        )
  30. )
  31. PAUSE>NUL
  32.  

La variable %~dp0 termina en "\". Si quieres quitarle esa barra, puedes usar %mypath:~0,-1%. Pero, en el FOR, en vez de usar %mypath%USUARIOS.txt, vas a tener que usar %mypath%\USUARIOS.txt

Otra opcion seria poner todo (txt y bat) en una carpeta que sea leible por todos los usuarios, usando variables de entorno, como por ejemplo %PUBLIC%. En otras palabras:

Código
  1. REM ...
  2. SET mypath=%PUBLIC%
  3. FOR /F "TOKENS=1,2 DELIMS=:" %%A IN (%PUBLIC%\USUARIOS.txt) DO (
  4. REM ...
  5.  

Ten en cuenta que esa variable de entorno no termina con "\", por lo cual la debes agregar.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines