Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: Force user to enter correct file format [YYYYMMDD.txt]  (Read 9748 times)

0 Members and 1 Guest are viewing this topic.

newuserlh

    Topic Starter


    Rookie

    Re: Force user to enter correct file format [YYYYMMDD.txt]
    « Reply #15 on: November 30, 2009, 05:39:53 AM »
    I dont think so. It's not printing the %result% and keeps going back to '
    set /p variable="Please input filename (YYYYMMDD.txt) ?"' because "%result%" has an empty value.


    Salmon Trout

    • Guest
    Re: Force user to enter correct file format [YYYYMMDD.txt]
    « Reply #16 on: November 30, 2009, 05:46:59 AM »
    Are you using the code inside a larger batch file, possibly in a loop?


    newuserlh

      Topic Starter


      Rookie

      Re: Force user to enter correct file format [YYYYMMDD.txt]
      « Reply #17 on: November 30, 2009, 05:59:14 AM »
      No its not in a loop at all. I've tried it by itself also, and the same happens, I can't get the result variable to display.

      Here is the whole of my code below:
      @echo off

      :BEGIN
      SET /p variable2=[Enter directory that Security Log reports are stored in] (e.g C:\seclogs):

      IF EXIST "%variable2%" echo This Directory has been Found.
      IF EXIST "%variable2%" GOTO FileBegin

      IF NOT EXIST "%variable2%" echo You are required to re-enter a directory name that exists:
      IF NOT EXIST "%variable2%" goto Begin
      :BEGINEND

      :FileBegin

      Echo Outstring="incorrect">dval.vbs
      Echo StrDate=Wscript.arguments(0)>>dval.vbs
      Echo y = Mid(StrDate,1,4)>>dval.vbs
      Echo m = Mid(StrDate,5,2)>>dval.vbs
      Echo d = Mid(StrDate,7,2)>>dval.vbs
      Echo If (IsDate(y^&"/"^&m^&"/"^&d) ^<^> 0) Then Outstring="correct">>dval.vbs
      Echo Wscript.Echo  Outstring>>dval.vbs

      :loop

      set /p variable="Please input filename (YYYYMMDD.txt) ?"
      pause
      For /f "delims=" %%A in ( 'dval.vbs "%variable%"' ) do set result=%%A
      pause
      Echo Date format %result%
      pause
      If /i not "%result%"=="correct" goto loop
      del c:\dval.vbs

      Set variable="%variable3%".txt
      IF EXIST "%variable2%\%variable%" echo This file has been Found.
      IF EXIST "%variable2%\%variable%" GOTO START

      IF NOT EXIST "%variable2%\%variable%" echo You are required to re-enter a file name that exists:
      IF NOT EXIST "%variable2%\%variable%" goto loop

      :start

      ECHO.
      ECHO 1. Generate Report for list of user logoffs
      ECHO 2. Generate Report for list of network logons
      ECHO 3. Generate Report for list of users who logged in and logged out
      ECHO 4. Generate Report for Special permissions assigned to new logon

      :choice
      set choice=
      set /p choice=Type the number to print text:
      if not '%choice%'=='' set choice=%choice:~0,1%
      if '%choice%'=='1' goto loggedout
      if '%choice%'=='2' goto networklogon
      if '%choice%'=='3' goto nwlogin_loggedout_users
      if '%choice%'=='4' goto specialprivs

      ECHO "%choice%" is not valid please try again
      ECHO.
      goto choice

      :loggedout
      echo Please wait while the report gets created..
      find /n ",538," %variable2%\%variable% > %variable2%\userlogout_%Variable%
      SET /p dummy=%variable2%\userlogout_%variable% file has now been generated.. Press return to exit
      echo Goodbye.
      goto end1

      :networklogon
      echo Please wait while the report gets created..
      findstr /n ",540," %variable2%\%variable% > %variable2%\networklogon_%Variable%
      echo %variable2%\networklogon_%variable% has been generated.
      pause
      goto end1

      :nwlogin_loggedout_users
      echo Please wait while the report gets created..
      mkdir "%variable2%\tmp"
      find /n ",540," %variable2%\%variable% > %variable2%\tmp\logonlogout_%Variable%.tmp
      find /n ",538," %variable2%\tmp\logonlogout_%Variable%.tmp > %variable2%\logonlogout_%Variable%
      del /f %variable2%\tmp\logonlogout_%Variable%.tmp
      echo C:\logonlogout_%variable% has been generated.
      pause
      goto end1

      :specialprivs
      echo Please wait while the report gets created..
      find /n ",576," %variable2%\%variable% > %variable2%\specialprivs_%Variable%
      echo %variable2%\specialprivs_%variable% has been generated.
      pause
      goto end1
      :end1

      Salmon Trout

      • Guest
      Re: Force user to enter correct file format [YYYYMMDD.txt]
      « Reply #18 on: November 30, 2009, 06:06:07 AM »
      @echo off

      I ran your code & it showed me the %result% variable. I had to press a key twice though.

      Take the 2 red pause statements out

      :BEGIN
      SET /p variable2=[Enter directory that Security Log reports are stored in] (e.g C:\seclogs):

      IF EXIST "%variable2%" echo This Directory has been Found.
      IF EXIST "%variable2%" GOTO FileBegin

      IF NOT EXIST "%variable2%" echo You are required to re-enter a directory name that exists:
      IF NOT EXIST "%variable2%" goto Begin
      :BEGINEND

      :FileBegin

      Echo Outstring="incorrect">dval.vbs
      Echo StrDate=Wscript.arguments(0)>>dval.vbs
      Echo y = Mid(StrDate,1,4)>>dval.vbs
      Echo m = Mid(StrDate,5,2)>>dval.vbs
      Echo d = Mid(StrDate,7,2)>>dval.vbs
      Echo If (IsDate(y^&"/"^&m^&"/"^&d) ^<^> 0) Then Outstring="correct">>dval.vbs
      Echo Wscript.Echo  Outstring>>dval.vbs

      :loop

      set /p variable="Please input filename (YYYYMMDD.txt) ?"
      pause
      For /f "delims=" %%A in ( 'dval.vbs "%variable%"' ) do set result=%%A
      pause
      Echo Date format %result%
      pause
      If /i not "%result%"=="correct" goto loop
      del c:\dval.vbs

      Set variable="%variable3%".txt
      IF EXIST "%variable2%\%variable%" echo This file has been Found.
      IF EXIST "%variable2%\%variable%" GOTO START

      IF NOT EXIST "%variable2%\%variable%" echo You are required to re-enter a file name that exists:
      IF NOT EXIST "%variable2%\%variable%" goto loop

      :start

      ECHO.
      ECHO 1. Generate Report for list of user logoffs
      ECHO 2. Generate Report for list of network logons
      ECHO 3. Generate Report for list of users who logged in and logged out
      ECHO 4. Generate Report for Special permissions assigned to new logon

      :choice
      set choice=
      set /p choice=Type the number to print text:
      if not '%choice%'=='' set choice=%choice:~0,1%
      if '%choice%'=='1' goto loggedout
      if '%choice%'=='2' goto networklogon
      if '%choice%'=='3' goto nwlogin_loggedout_users
      if '%choice%'=='4' goto specialprivs

      ECHO "%choice%" is not valid please try again
      ECHO.
      goto choice

      :loggedout
      echo Please wait while the report gets created..
      find /n ",538," %variable2%\%variable% > %variable2%\userlogout_%Variable%
      SET /p dummy=%variable2%\userlogout_%variable% file has now been generated.. Press return to exit
      echo Goodbye.
      goto end1

      :networklogon
      echo Please wait while the report gets created..
      findstr /n ",540," %variable2%\%variable% > %variable2%\networklogon_%Variable%
      echo %variable2%\networklogon_%variable% has been generated.
      pause
      goto end1

      :nwlogin_loggedout_users
      echo Please wait while the report gets created..
      mkdir "%variable2%\tmp"
      find /n ",540," %variable2%\%variable% > %variable2%\tmp\logonlogout_%Variable%.tmp
      find /n ",538," %variable2%\tmp\logonlogout_%Variable%.tmp > %variable2%\logonlogout_%Variable%
      del /f %variable2%\tmp\logonlogout_%Variable%.tmp
      echo C:\logonlogout_%variable% has been generated.
      pause
      goto end1

      :specialprivs
      echo Please wait while the report gets created..
      find /n ",576," %variable2%\%variable% > %variable2%\specialprivs_%Variable%
      echo %variable2%\specialprivs_%variable% has been generated.
      pause
      goto end1
      :end1

      newuserlh

        Topic Starter


        Rookie

        Re: Force user to enter correct file format [YYYYMMDD.txt]
        « Reply #19 on: November 30, 2009, 06:11:48 AM »
        Still not working on my end for some reason  ???
        Cannot get the variable to show at all  >:(

        Salmon Trout

        • Guest
        Re: Force user to enter correct file format [YYYYMMDD.txt]
        « Reply #20 on: November 30, 2009, 06:14:48 AM »
        Code: [Select]
        Set variable="%variable3%".txt
        What does this line do?
        « Last Edit: November 30, 2009, 06:29:58 AM by Salmon Trout »

        Salmon Trout

        • Guest
        Re: Force user to enter correct file format [YYYYMMDD.txt]
        « Reply #21 on: November 30, 2009, 06:39:28 AM »
        Code: [Select]
        @echo off

        :BEGIN
        SET /p variable2=[Enter directory that Security Log reports are stored in] (e.g C:\seclogs):

        IF EXIST "%variable2%" echo This Directory has been Found.
        IF EXIST "%variable2%" GOTO FileBegin

        IF NOT EXIST "%variable2%" echo You are required to re-enter a directory name that exists:
        IF NOT EXIST "%variable2%" goto Begin
        :BEGINEND

        :FileBegin

        Echo Outstring="incorrect">dval.vbs
        Echo StrDate=Wscript.arguments(0)>>dval.vbs
        Echo y = Mid(StrDate,1,4)>>dval.vbs
        Echo m = Mid(StrDate,5,2)>>dval.vbs
        Echo d = Mid(StrDate,7,2)>>dval.vbs
        Echo If (IsDate(y^&"/"^&m^&"/"^&d) ^<^> 0) Then Outstring="correct">>dval.vbs
        Echo Wscript.Echo  Outstring>>dval.vbs

        :loop

        set /p variable="Please input filename (YYYYMMDD.txt) ?"
        For /f "delims=" %%A in ( 'dval.vbs "%variable%"' ) do set result=%%A
        Echo Date format %result%
        If /i not "%result%"=="correct" goto loop

        IF EXIST "%variable2%\%variable%" (
            echo This file has been Found
            goto start
            )
           

        echo File "%variable2%\%variable%" not found
        echo You are required to re-enter a file name that exists:
        goto loop

        :start

        ECHO.
        ECHO 1. Generate Report for list of user logoffs
        ECHO 2. Generate Report for list of network logons
        ECHO 3. Generate Report for list of users who logged in and logged out
        ECHO 4. Generate Report for Special permissions assigned to new logon

        :choice
        set choice=
        set /p choice=Type the number to print text:
        if not '%choice%'=='' set choice=%choice:~0,1%
        if '%choice%'=='1' goto loggedout
        if '%choice%'=='2' goto networklogon
        if '%choice%'=='3' goto nwlogin_loggedout_users
        if '%choice%'=='4' goto specialprivs

        ECHO "%choice%" is not valid please try again
        ECHO.
        goto choice

        :loggedout
        echo Please wait while the report gets created..
        find /n ",538," %variable2%\%variable% > %variable2%\userlogout_%Variable%
        SET /p dummy=%variable2%\userlogout_%variable% file has now been generated.. Press return to exit
        echo Goodbye.
        goto end1

        :networklogon
        echo Please wait while the report gets created..
        findstr /n ",540," %variable2%\%variable% > %variable2%\networklogon_%Variable%
        echo %variable2%\networklogon_%variable% has been generated.
        pause
        goto end1

        :nwlogin_loggedout_users
        echo Please wait while the report gets created..
        mkdir "%variable2%\tmp"
        find /n ",540," %variable2%\%variable% > %variable2%\tmp\logonlogout_%Variable%.tmp
        find /n ",538," %variable2%\tmp\logonlogout_%Variable%.tmp > %variable2%\logonlogout_%Variable%
        del /f %variable2%\tmp\logonlogout_%Variable%.tmp
        echo C:\logonlogout_%variable% has been generated.
        pause
        goto end1

        :specialprivs
        echo Please wait while the report gets created..
        find /n ",576," %variable2%\%variable% > %variable2%\specialprivs_%Variable%
        echo %variable2%\specialprivs_%variable% has been generated.
        pause
        goto end1
        :end1

        newuserlh

          Topic Starter


          Rookie

          Re: Force user to enter correct file format [YYYYMMDD.txt]
          « Reply #22 on: November 30, 2009, 06:48:52 AM »
          Ah I'm still confused. I'm not sure why the variable is still not displaying.
          Thanks for your help.

          Salmon Trout

          • Guest
          Re: Force user to enter correct file format [YYYYMMDD.txt]
          « Reply #23 on: November 30, 2009, 06:52:32 AM »
          Code: [Select]
          [Enter directory that Security Log reports are stored in] (e.g C:\seclogs):s:\test
          This Directory has been Found.
          Please input filename (YYYYMMDD.txt) ?20091130.txt
          Date format correct
          This file has been Found

          1. Generate Report for list of user logoffs
          2. Generate Report for list of network logons
          3. Generate Report for list of users who logged in and logged out
          4. Generate Report for Special permissions assigned to new logon
          Type the number to print text:


          newuserlh

            Topic Starter


            Rookie

            Re: Force user to enter correct file format [YYYYMMDD.txt]
            « Reply #24 on: November 30, 2009, 07:34:22 AM »

            Alright, I've got it working apart from an error on this line:
            for /f "delims=" %%A in ( 'cscript c:\dval.vbs "%variable%"' ) do set result=%%A

            It says that 'The filename, directory name, or volume label syntax is incorrect'.

            Any ideas?

            Salmon Trout

            • Guest
            Re: Force user to enter correct file format [YYYYMMDD.txt]
            « Reply #25 on: November 30, 2009, 07:46:36 AM »
            The vbs script is not being found. The batch is writing it to dval.vbs i.e. in the current directory (the same directory that the batch is in) but you have coded the calling line to look for c:\dval.vbs

            EITHER: change all these dval.vbs to c:\dval.vbs

            Code: [Select]
            Echo Outstring="incorrect">dval.vbs
            Echo StrDate=Wscript.arguments(0)>>dval.vbs
            Echo y = Mid(StrDate,1,4)>>dval.vbs
            Echo m = Mid(StrDate,5,2)>>dval.vbs
            Echo d = Mid(StrDate,7,2)>>dval.vbs
            Echo If (IsDate(y^&"/"^&m^&"/"^&d) ^<^> 0) Then Outstring="correct">>dval.vbs
            Echo Wscript.Echo  Outstring>>dval.vbs

            OR: change c:\dval.vbs to dval.vbs

            Code: [Select]
            for /f "delims=" %%A in ( 'cscript c:\dval.vbs "%variable%"' ) do set result=%%A

            newuserlh

              Topic Starter


              Rookie

              Re: Force user to enter correct file format [YYYYMMDD.txt]
              « Reply #26 on: December 01, 2009, 05:41:55 AM »
              Hi ya,
              Thanks for all the information.
              I got it working anyway and it seems to be fine now. I disregarded the cb script popup boxes that displayed "incorrect" and "correct" and printed it out within the batch program.

              I may have to do more complex things with these reports, like strip off certain information from the actual log text files.
              Is Perl the best to generate these kind of reports?
              Thanks,
              Laura

              Salmon Trout

              • Guest
              Re: Force user to enter correct file format [YYYYMMDD.txt]
              « Reply #27 on: December 01, 2009, 06:05:23 AM »
              I disregarded the cb script popup boxes that displayed "incorrect" and "correct" and printed it out within the batch program.


              That is a clue that you are running the script with wscript.exe and not cscript.exe which explains the lack of output you were experiencing.

              You are using the command

              cscript.exe //nologo before the vbs script name?


              newuserlh

                Topic Starter


                Rookie

                Re: Force user to enter correct file format [YYYYMMDD.txt]
                « Reply #28 on: December 01, 2009, 06:34:10 AM »
                Yeah it's running cscript now.  I had issues with the output there and changed the delim line.
                It's sorted out now thankfully.