批量文件输入电话号码

时间:2014-07-15 23:55:18

标签: batch-file phone-number

我写了一个批处理文件,用于向电话号码%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

正如你所看到的,它真的很漫长而复杂。它的工作原理,但你所谓的" 意大利面条代码"。我愿意打赌,有一种更简单的方法来实现我的目标。

4 个答案:

答案 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)限制为数字。

在这里下载:

https://github.com/Bill-Stewart/editenv/releases