在Windows批处理文件中允许多行用户输入的简便方法

时间:2015-06-25 23:20:42

标签: windows batch-file user-input multiline

我有一个Windows脚本,提示用户输入各种信息,将一些文件拉到一起,然后使用blat通过电子邮件发送所有文件。

我一直在寻找一种允许用户添加多行消息的方法。这就是我想出的:

echo Please provide text for the email message
echo Press Enter twice when finished
echo (text may not contain  ^<, ^>, ^|, ^&, or un-closed quotes)
set new_line=""
:still_typing
set /p new_line=">"
if errorlevel 1 echo. >> message.txt & set /p new_line=">"
if errorlevel 1 echo Sending message. . . & goto done_typing
echo      %new_line% >> message.txt
goto still_typing

:done_typing
echo done

这会在控制台上产生类似的内容

Please provide text for the email message
Press Enter twice when finished
(text may not contain  <, >, |, &, or un-closed quotes)
>hello world
>here is some text
>
>text on another line
>
>
done

并提供一个文件message.txt

hello world 
here is some text

text on another line

唯一需要注意的是文件必须具有.cmd扩展名。在 set / p 无法更新变量后,这会生成正确的错误级别。它在.bat文件中不起作用,因为 set 总是返回 errorlevel = 1

我希望这可以帮助某些人,我仍然对任何更好的方法感到好奇。

0 个答案:

没有答案