我写了一个批处理文件,用于向电话号码%number%
发送短信。 (如果你的古玩,它使用curl和textbelt.com系统)。我用一种过于复杂的方式让用户输入电话号码。我将字符限制为仅限数字,自动限制十个字符,并自动添加破折号。
这是我的代码:
:start
cls
echo Enter phone number:
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x1=%x% - 1
cls
echo Enter phone number:
echo %x1%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x2=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x3=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x4=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x5=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%%x5%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x6=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%%x5%%x6%-
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x7=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%%x5%%x6%-%x7%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x8=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%%x5%%x6%-%x7%%x8%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x9=%x% - 1
cls
echo Enter phone number:
echo %x1%%x2%%x3%-%x4%%x5%%x6%-%x7%%x8%%x9%
choice /c 0123456789 >nul
set x=%errorlevel%
set /a x10=%x% - 1
set number=%x1%%x2%%x3%%x4%%x5%%x6%%x7%%x8%%x9%%x10%
cls
echo is this the correct number?
echo. %number%
choice /c yn
set x=%errorlevel%
if %x%==2 goto start
正如你所看到的,它真的很漫长而复杂。它的工作原理,但你所谓的" 意大利面条代码"。我愿意打赌,有一种更简单的方法来实现我的目标。
答案 0 :(得分:1)
如果可以使用外部程序,则可以使用editv32.exe(32位)或editv64.exe(64位)程序获取环境变量的输入。示例shell脚本(批处理文件):
@echo off
setlocal enableextensions
set PHONE=
editv32 -l 10 -n -p "Enter phone number: " PHONE
echo You entered: %PHONE%
-l 10
将输入长度限制为10个字符,而-n
仅允许数字输入。你可以从这里下载editv32.exe / editv64.exe:http://www.westmesatech.com/editv.html(受版权保护的免费软件)
答案 1 :(得分:1)
一个想法:
@echo off
setlocal enabledelayedexpansion
cls
:start
set number=
for /l %%a in (1,1,9) do (
cls
if defined number echo !number!
echo Enter phone number:
choice /c 0123456789 >nul
set /a x=!errorlevel!-1
set number=!number!!x!
)
echo is this the correct number?
echo. %number:~0,3%-%number:~3,3%-%number:~6,3%
choice /c yn
set x=%errorlevel%
if %x%==2 goto start
答案 2 :(得分:0)
您可以以非常简单的方式使用ReadFormattedLine子例程;例如:
:start
cls
call :ReadFormattedLine number="###-###-####" /M "Enter phone number: "
echo Is this the correct number?
choice /c yn
if %errorlevel% equ 2 goto start
echo The correct number is: %number%
这个子程序是用纯批处理编写的,所以它不需要任何额外的程序,它允许几个格式化的输入操作,如读取密码,转换为大写字母等。您可以从Read a line with specific format下载它。
答案 3 :(得分:0)
我的开源editenv
工具取代了我以前的editv32
/ editv64
实用工具:
https://github.com/Bill-Stewart/editenv
样品用量:
editenv -l 10 -a 0123456789 -p "Enter phone number: " PHONE
此命令将显示一个Enter phone number:
提示符并等待输入。输入长度(-l
)限制为10个字符,允许的字符(-a
)限制为数字。
在这里下载: