Frage

Ich bin ein Kartenspiel für die Batch-Entwicklung. [Einen Link zu geben, wenn Sie fertig]

Basiclly ich will, was zu tun ist 'gesetzt' '% zufälliges%' auf ‚% numbs%.

set %numbs%=%random%

Und dann mag ich in der einen Wert aus dem% zufälligen% Zahlen angezeigt eingeben

echo %numbs%
Set nuchoo=
set /p nuchoo=Number: 

Was nun meine Frage ist, wie zu überprüfen, ob der Wert eingegeben durch den Benutzer in dem Verzeichnis% ist numbs% -Wert. Wenn ja,

GOTO :validnucho

Wenn nicht,

GOTO :unvalidnucho

Wenn es geht an: validnucho, sollte es diese Zahl aus dem% numbs% var löschen. Es spielt eine Rolle offensichtlich, wenn die%% var numbs enthält 2x die Zahl, so sollte es nur eine der beiden löschen. Der Rest weiß ich.

War es hilfreich?

Lösung

Das sollten Sie beginnen

Speichern Sie die folgenden als Instr.cmd

@echo off 

rem These two lines allow tracing to be turned on by entering 
rem set TRACE=ECHO on the cmd line
  if not defined TRACE set TRACE=rem
  %TRACE% on 

rem Allow use of delayed variable expansion using !  
  setlocal ENABLEDELAYEDEXPANSION 

  if  /I [%1]==[Test] ( 
    call :Test
    goto :eof
    )

:Instr 
  set mTestStr=%1

rem  set /a does arithmatic
  set /a TestIdx=0
  set Found=N
  set CopiedStr=

  :startLoop

rem extract character at index TestIndx to test   
    set TestedChar=!mTestStr:~%TestIdx%,1!
rem echo TestedChar if trace is on 
    %TRACE% %TestedChar%

    If [!TestedChar!]==[] (
      goto :exitInstr
    )

    If [%TestedChar%]==[%2] (
rem   Testedchar matchs search character, 
rem   so we have found the char we were looking for    
      if %Found%==Y (
        set CopiedStr=%CopiedStr%%TestedChar%
      ) 
      set Found=Y
    ) else (
      set CopiedStr=%CopiedStr%%TestedChar%
    ) 



rem Increment Index       
    SET /a TestIdx=TestIdx+1

  goto :startLoop

:exitInstr

rem endlocal but keep CopiedStr and Found
  endlocal & set CopiedStr=%CopiedStr% & set Found=%Found%

goto :eof

:Test    


  call :Instr abcde c
  call :Verify Y %Found% "call :Instr abcde c - Found"
  call :Verify abde, %CopiedStr% "call :Instr abcde c - CopiedStr"

  call :Instr abcde x
  call :Verify N %Found% "call :Instr abcde x - Found"
  call :Verify abcde, %CopiedStr% "call :Instr abcde x - CopiedStr"

  call :Instr abcdec c
  call :Verify Y %Found% "call :Instr abcdec c - Found"
  call :Verify abdec, %CopiedStr% "call :Instr abcdec c - CopiedStr"


    echo Tests Done

goto :eof   

:Verify
  set Expected=%1
  set Expected=%Expected:"=%

  set Actual=%2
  set Actual=%Actual:"=%

  set Msg=%3
  set Msg=%msg:"=%

  If not "%Expected%"=="%Actual%"   (
    echo Failed: Expected "%Expected%" but was "%Actual%"  - %Msg%
  ) else ( 
    echo OK Expected "%Expected%" - %Msg%
  )

goto :eof   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top