批处理文件输入验证和限制 [英] Batch file input validation and limitation

查看:135
本文介绍了批处理文件输入验证和限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个批处理文件,帮助客户做他们的文件自动备份,但它不是编辑友好的他们,所以我打算让客户输入他们的备份的目标驱动器的信。

问题是,我不知道如何将他们的输入限制只有一个字符,只有A-Z

我看了这个资源>
<一href=\"http://stackoverflow.com/questions/684301/batch-file-input-validation-make-sure-user-entered-an-integer\">Batch文件输入验证 - 确保用户输入一个整数。但仍无法找出任何解决方案

现在的问题是,我们真的可以限制输入长度和验证的事情吗?请问有什么可以参考在这个问题上使用?

这是我的code

 :初始化
关闭@echo
02色REM - 集瓦尔
设置TGL =%DATE:0,2〜%
设定亿=%DATE:〜-7,2%
设置THN =%DATE:〜-4,4%
集果酱=%TIME:0,2〜%
如果%时间:〜0.1%==设置果酱= 0%TIME:〜1,1%
设置menit =%TIME:〜3,2%
设置detik =%TIME:6,2〜%回声在哪个驱动器将为您保存备份? (只有一个字母,A-Z)
集/ P驱动=
暂停
CLS
:stopsvc
净停止svc01
CLS
回声一站式服务[OK]
回声复制文件[]
回声启动服务[]
回声归档[]
回声。
REM - 开始备份
回声。
:复制
回声复制...
XCOPY / E / Y C:\\文档%驱动器%:\\ DATA \\文档\\
CLS
回声一站式服务[OK]
回声拷贝文件[OK]
回声启动服务[]
回声归档[]
回声。
回声。
:startsvc
回声开始MySQL服务...
NET START svc01
如果错误级别= 1 goto语句svcfail
回声。
做呼应
CLS
回声一站式服务[OK]
回声拷贝文件[OK]
回声启动服务[OK]
回声归档[]
回声。
回声。
回声备份成功创建
现在呼应归档...
回声。
:存档
CD%驱动器%:\\ DATA
仁文档,备份 - [%果酱%% menit%] - %TGL% - %亿% - %THN%
回声存档 - 确定
CLS
回声一站式服务[OK]&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声拷贝文件[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声启动服务[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声归档[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声。
回声。
回声buhbye
回声版权所有(c)[SC] 2010-2011
暂停
转到EOF:svcfail
回声无法启动svc01服务&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声手动启动它通过SERVICES.MSC&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声。
回声。
回声一站式服务[OK]
回声拷贝文件[OK]
回声启动服务[FAIL]
回声归档[]
暂停
后藤的archive1
:的archive1
CD%驱动器%:\\ DATA
仁文档,备份 - [%果酱%% menit%] - %TGL% - %亿% - %THN%
回声存档 - 确定
CLS
回声一站式服务[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声拷贝文件[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声启动服务[FAIL]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声归档[OK]&GT;&GT; logBACKUP - [%果酱%% menit%] - %THN%的.txt%TGL% - - %亿%。
回声。
回声。
呼应全部完成〜!
暂停
转到EOF:EOF
出口


解决方案

下面使用基本CMD语法。它会循环,直到用户输入一个小写字符。

 :选择
集/ p =选择在哪个驱动器将为您保存备份? (只有一个字母,A-Z)
如果不是%选择:1,1〜%==goto语句的选择
如果选择%%LSS的转到选择
如果选择%%GTRZ转到选择
设置硬盘=%选择%

I have a batch file to help clients do automated backup of their files, however it's not editing friendly to them, so I plan to make the clients input a letter for the destination drive of their backup.

The problem is, I do not know how to limit their input to only one characters and only a-z

I have read this resource > Batch File input validation - Make sure user entered an integer . But still can't figure out any solution

The question is, do we really can limit the input length and the validation thing? are there any reference can use on this matter?

here is my code

:init
@echo off
color 02

REM -- set vars
set tgl=%DATE:~0,2%
set bln=%DATE:~-7,2%
set thn=%DATE:~-4,4%
set jam=%TIME:~0,2%
if "%time:~0,1%"==" " set jam=0%TIME:~1,1%
set menit=%TIME:~3,2%
set detik=%TIME:~6,2%



echo Under which drive will you save the backup? ( one letter only, a-z )
set /p drive=
pause
cls
:stopsvc
net stop svc01
cls
echo stop service   [OK]
echo copy files     [ ]
echo start service  [ ]
echo archiving  [ ]
echo.
REM -- start backup
echo.
:copy
echo copying ...
xcopy /e /y c:\docs %drive%:\data\docs\
cls
echo stop service   [OK]
echo copy files     [OK]
echo start service  [ ]
echo archiving  [ ]
echo.
echo.
:startsvc
echo starting MySQL service...
net start svc01
if errorlevel = 1 goto svcfail
echo.
echo done
cls
echo stop service   [OK]
echo copy files     [OK]
echo start service  [OK]
echo archiving  [ ]
echo.
echo.
echo backup successfully created
echo now archiving ...
echo.
:archive
cd "%drive%:\data"
ren "docs" "BACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%"
echo archiving - OK
cls
echo stop service   [OK] > "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo copy files     [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start service  [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo archiving  [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo. 
echo.
echo buhbye
echo copyright(c) [SC] 2010-2011
pause
goto eof

:svcfail
echo cannot start svc01 service > "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start it manually through services.msc >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo.
echo.
echo stop service   [OK]
echo copy files     [OK]
echo start service  [FAIL]
echo archiving  [ ]
pause
goto archive1
:archive1
cd "%drive%:\data"
ren "docs" "BACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%"
echo archiving - OK
cls
echo stop service   [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo copy files     [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start service  [FAIL] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo archiving  [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo.
echo.
echo all done~!
pause
goto eof



:eof
exit

解决方案

The following uses basic cmd syntax. It will loop until user enter a single lowercase character.

:choice
set /p choice=Under which drive will you save the backup? ( one letter only, a-z )
if not "%choice:~1,1%"=="" goto choice
if "%choice%" lss "a" goto choice
if "%choice%" gtr "z" goto choice
set drive=%choice%

这篇关于批处理文件输入验证和限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆