18

ユーザー入力が空であるか、「DTO」で終わっていない場合、ユーザーに DTO 名を再度入力するように求める必要があるバッチ スクリプトを作成しています。

:INPUT
SET /P INPUTDTO=Enter the DTO:

IF "%INPUTDTO%"=="" (
      IF "%INPUTDTO%" ??????? (
             GOTO NODTO
      )
)

:NODTO
ECHO ERROR: Please enter a valid DTO.
GOTO INPUT

ユーザー入力が「DTO」で終わっているかどうかを確認する方法

4

4 に答える 4

21

ユーザーが何も入力しない場合、SET /P は既存の値を保持するため、既存の INPUTDTO 値はおそらくクリアする必要があります。

@echo off
set "INPUTDTO="
:INPUT
SET /P INPUTDTO=Enter the DTO:
if "%INPUTDTO:~-3%" neq "DTO" (
  ECHO ERROR: Please enter a valid DTO.
  goto INPUT
)

/I比較で大文字と小文字を区別しないようにする場合は、IF ステートメントにスイッチを追加します。

于 2012-10-03T17:09:40.103 に答える
1

他のソフトウェアを使用することにオープンな場合は、GnuWin32のgrepを使用できます。1.5MBに戻ります

@echo off
:INPUT
SET /P INPUTDTO=Enter the DTO:


echo %INPUTDTO% | grep .*DTO\b

IF %ERRORLEVEL%==1 (
 goto NODTO
)
goto:eof
:NODTO
 ECHO ERROR: Please enter a valid DTO.
 GOTO INPUT
于 2012-10-03T17:17:34.790 に答える
1

ロジックは単純です。まず、元の文字列から "DTO" をすべて削除し、それを別の変数に格納します。INTPUTDTO次に、最後に「DTO」を追加して元の変数と比較します。

:INPUT
SET /P INPUTDTO=Enter the DTO:
SET NEWINPUTDTO=%INPUTDTO:DTO=%

IF "%INPUTDTO%"=="" (
      IF NOT "%NEWINPUTDTO%DTO"=="%INPUTDTO%"  (
             GOTO NODTO
      )
)

:NODTO
ECHO ERROR: Please enter a valid DTO.
GOTO INPUT

また、スクリプトの複雑さを気にしない場合は、これを使用してください。

IF NOT "%INPUTDTO:DTO=%DTO"=="%INPUTDTO%"
于 2012-10-03T17:10:03.923 に答える
0

ここで説明されているように、部分文字列化機能を使用できるかもしれません:バッチ ファイルで部分文字列を実行する最良の方法は何ですか? .

次に、その部分文字列を「DTO」と比較します。

于 2012-10-03T17:11:43.047 に答える