我正在运行一个批处理文件,提示用户“输入名称”。如果用户没有输入任何内容并按下回车键,那么我想一遍又一遍地显示同一个窗口,上面写着:
Enter Name:
以下代码不起作用:
@echo off
:myDosFunc
set /p name=Enter Name:
IF "%name%"=="" (
call:myDosFunc
) ELSE (
echo %path%
)
pause
GOTO:EOF
call:myDosFunc
我是批处理新手,请帮忙。
我正在运行一个批处理文件,提示用户“输入名称”。如果用户没有输入任何内容并按下回车键,那么我想一遍又一遍地显示同一个窗口,上面写着:
Enter Name:
以下代码不起作用:
@echo off
:myDosFunc
set /p name=Enter Name:
IF "%name%"=="" (
call:myDosFunc
) ELSE (
echo %path%
)
pause
GOTO:EOF
call:myDosFunc
我是批处理新手,请帮忙。
这类似于 w0051977 答案,但我相信它更符合您的初衷。
@echo off
set "name="
:myDosFunc
set /p "name=Enter Name: "
if not defined name goto :myDosFunc
echo %path%
pause
exit /b
如果您只希望提示出现一次,无论用户按 Enter 多少次而不输入任何内容,那么您可以使用:
@echo off
set "name="
<nul set /p "=Enter Name: "
:myDosFunc
set /p "name="
if not defined name goto :myDosFunc
echo %path%
pause
exit /b
我认为这就是你所追求的:
@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
使用 GOTO 关键字。去这里了解更多信息: http: //www.codeproject.com/Tips/123810/Get-user-input-from-DOS-prompt
问题是您试图显示 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
一个简单的解决方案是cls
在提示输入之前添加
:myDosFunc
cls
set /p name=Enter Name: