如何批量退出用户输入循环?

时间:2016-12-13 23:57:58

标签: batch-file command-line

我有一个简单的for循环来获取用户输入并使用此输入创建一个文件,然后请求下一个输入并创建“file2”等,但我似乎无法弄清楚我的用户如何退出具有特定输入的循环(可能是“退出”或“结束”)。

setlocal enabledelayedexpansion
set x=1

:runName

set /p names="Enter header for file !x!:"

for %%a in (%names%) do (>>file!x!.txt (echo %%~a) set /a x+=1)

if !names!=end goto:eof else goto:runName

:eof

echo按任意键关闭    暂停> NUL

聚苯乙烯。很抱歉格式不佳,我无法想象如何在手机的灰色区域输入我的代码,此刻没有电脑。

3 个答案:

答案 0 :(得分:1)

我不太清楚为什么输入提示会显示标题 这是我最好的猜测你的意思:

@Echo off
setlocal enabledelayedexpansion
set x=1

:runName
Set "names="
set /p names="Enter header for file%x%:"
if not defined names goto :end
if /I "%names%" Equ "end" goto :end
(
for %%a in (%names%) do (echo:%%~a)
) >file!x!.txt
set /a x+=1
goto :runName
:end
echo press any key to close
pause>nul

运行

Enter header for file1:anton bertha caesar
Enter header for file2:anchorage berlin
Enter header for file3:END
press any key to close

文件内容

> type file*.txt
file1.txt
anton
bertha
caesar

file2.txt
anchorage
berlin

答案 1 :(得分:0)

  

我似乎无法弄清楚我的用户如何退出循环

如果您允许建议,我的不会那样做

几乎所有批处理脚本都最好编写为接受命令行选项和文件作为输入。一旦你让用户以交互方式提供输入 - 超过YN,甚至是令人讨厌的 - 你将他置于一个不好的位置。他不能重新运行你的脚本而不再经历单调乏味。他不能使用制表符完成,也不能从列表中选择。他被困在一个用户界面元素中,这个元素在30年内没有得到改善,并且当时并不是很好。

我不知道具体建议什么。您提供的示例非常简单,使用记事本直接提供文件比使用脚本创建文件更容易。然后,您可能需要验证脚本以确保提供的输入文件有效。

答案 2 :(得分:0)

SETLOCAL ENABLE扩展名ENABLEDELAYEDEXPANSION

对于/ f“ SKIP = 0 EOL =; TOKENS = * DELIMS =”%di in('dir / b c:\ windows *。* ^ | FIND / i * .exe')执行(

选择/ D N / T 5 / C YN / M“请先按Y退出”

如果!ERRORLEVEL!== 1转到:END

如果!ERRORLEVEL!== 2 ECHO CONTINUE

超时5

@echo %% i

:END

ENDLOCAL