es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo escribir un script para “Si %variable%==*CUALQUIERCOSA* realizar tarea”?

Estoy tratando de agregar a un script en el que he estado trabajando (y Compo ha sido de gran ayuda) para incorporar la entrada de usuario. Actualmente tengo:

SET /p KIOSK=Ingrese la NUEVA cuenta aquí o deje en blanco para CONSULTAR la cuenta actual
ECHO.
IF “%KIOSK%”==”*” @%SystemRoot%\System32\reg.exe ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /V “DefaultUserName” /D %KIOSK% /F 1>NUL && ECHO La cuenta de Kiosko se cambió a %KIOSK% || ECHO La cuenta de Kiosko NO se cambió
IF “%KIOSK%”==”” ECHO Consultando la cuenta actual…

Lo que quiero es que @%SystemRoot%\System32\reg.exe ADD cambie “DefaultUserName” a lo que el usuario ingrese. El KIOSK se verá algo así: “K#######” donde # podría ser cualquier número del 0 al 9. Entonces básicamente, si %KIOSK%== literalmente cualquier cosa, quiero que “DefaultUserName” se cambie a ese valor. No estoy seguro de cómo obtener este resultado. Y sí, sé que debe ejecutarse como Administrador.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, puedes modificar la declaración if para comprobar si la entrada del usuario coincide con el patrón deseado utilizando expresiones regulares. Aquí tienes un ejemplo:

    SET /p KIOSK=Ingrese la nueva cuenta aquí o deje en blanco para CONSULTAR la cuenta actual: 
    ECHO. 
    SET pattern=K[0-9][0-9][0-9][0-9][0-9][0-9]
    IF "%KIOSK%"=="" ECHO Consultando la cuenta actual . . .
    IF /I "%KIOSK%" EQU "%pattern%" (
      ECHO Cambiando la cuenta del quiosco a %KIOSK%...
      @%SystemRoot%\System32\reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultUserName" /D %KIOSK% /F >NUL && ECHO La cuenta del quiosco se ha cambiado a %KIOSK% || ECHO La cuenta del quiosco NO se ha cambiado
    ) ELSE (
      ECHO ¡Entrada no válida! Por favor, introduzca una cuenta de quiosco válida en el formato K######.
    )
    

    En este ejemplo, primero establecemos una variable pattern que contiene una expresión regular para que coincida con el formato deseado de la cuenta del quiosco. Luego modificamos la declaración if para comprobar si la entrada del usuario coincide con el patrón utilizando la opción /I para que no tenga en cuenta las mayúsculas y minúsculas. Si coincide, ejecutamos el comando para cambiar el valor del registro DefaultUserName con la cuenta del quiosco introducida utilizando @%SystemRoot%\System32\reg.exe ADD y redirigiendo la salida a >NUL para suprimir cualquier mensaje de error que pueda resultar al ejecutar el comando. También utilizamos && para encadenar un mensaje de echo que confirma el cambio, y || para encadenar un mensaje de echo que confirma que el cambio no se realizó en caso de cualquier error. Si la entrada del usuario no coincide con el patrón, mostramos un mensaje de error pidiendo al usuario que introduzca una cuenta de quiosco válida en el formato K######.

Comments are closed.