我有一个简单的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
聚苯乙烯。很抱歉格式不佳,我无法想象如何在手机的灰色区域输入我的代码,此刻没有电脑。
答案 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)
我似乎无法弄清楚我的用户如何退出循环
如果您允许建议,我的不会那样做。
几乎所有批处理脚本都最好编写为接受命令行选项和文件作为输入。一旦你让用户以交互方式提供输入 - 超过Y
或N
,甚至是令人讨厌的 - 你将他置于一个不好的位置。他不能重新运行你的脚本而不再经历单调乏味。他不能使用制表符完成,也不能从列表中选择。他被困在一个用户界面元素中,这个元素在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