1

ユーザーに「名前の入力」を求めるバッチファイルを実行しています。ユーザーが何も入力せずにEnterキーを押した場合、同じウィンドウを何度も表示したいと思います。

Enter Name:

以下のコードは機能していません:

@echo off
:myDosFunc
set /p name=Enter Name:
IF "%name%"=="" (
call:myDosFunc
) ELSE (
echo %path%
)
pause
GOTO:EOF

call:myDosFunc

私はバッチに不慣れです、助けてください。

4

4 に答える 4

2

これは w0051977 の回答に似ていますが、元の意図により近いと思います。

@echo off
set "name="
:myDosFunc
set /p "name=Enter Name: "
if not defined name goto :myDosFunc
echo %path%
pause
exit /b

ユーザーが何も入力せずに Enter キーを何回押しても、プロンプトを 1 回だけ表示する場合は、次を使用できます。

@echo off
set "name="
<nul set /p "=Enter Name: "
:myDosFunc
set /p "name="
if not defined name goto :myDosFunc
echo %path%
pause
exit /b
于 2012-11-25T21:01:33.350 に答える
1

問題は、二重引用符で囲まずに PATH を表示しようとしていることです)。PATH には競合する演算子が含まれている可能性があり、batfile はエラーで閉じます。

PS: コードにその他の小さな修正を加えました。

@echo off

:myDosFunc
Set "NAME="
set /p "name=Enter Name:"

IF NOT DEFINED NAME (
    call :myDosFunc
) ELSE (
    echo "%path%"
)
pause
GOTO:EOF
于 2012-11-25T20:40:38.363 に答える
1

I think this is what you are after:

@ECHO OFF
:start
SET /P uname=Please enter your name: 
IF "%uname%"=="" GOTO Error
ECHO Hello %uname%, Welcome to DOS inputs!
GOTO End
:Error
goto start
:End

Use the GOTO keyword. Go here for more information: http://www.codeproject.com/Tips/123810/Get-user-input-from-DOS-prompt

于 2012-11-25T20:39:00.233 に答える
0

cls簡単な解決策は、入力を求める前に追加することです

:myDosFunc
cls
set /p name=Enter Name:
于 2012-11-26T09:04:09.483 に答える