我有一个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 。
我希望这可以帮助某些人,我仍然对任何更好的方法感到好奇。