标题: [文本处理] [已解决]如何使批处理必须输入内容,不可以直接回车 [打印本页]
作者: yuelaner 时间: 2011-8-16 19:54 标题: [已解决]如何使批处理必须输入内容,不可以直接回车
本帖最后由 yuelaner 于 2011-8-17 02:00 编辑
写文件的批处理。- @echo off
- echo.
- set /p Name="请输入名称:"
- set /p ok="是否验证:"
- echo %Name%,%ok%,>>.\File.txt
- goto :end
复制代码
但后来发现,如果直接回车,会发生下面效果:
就是每个逗号前面都没有内容。
如何避免这样情况发生?
不知道批处理能不能达到下面要求:
1. 必须输入内容,再回车执行。
但不可以直接回车,如果直接回车,则提示需要请输入内容。
Name=只可以输入中文和英文(不分大小写),但不能输入标点及其他特殊符号,输入其他则提示输入错误。
ok=只可以输入数字,不可以输入其他,输入其他则提示输入错误。
例如:
数字可以输入34511234或其他数字,没有限制多少个数字。
类似效果:
用户名qt,8514253,
中文字ad,100,
作者: raymai97 时间: 2011-8-16 20:17
本帖最后由 raymai97 于 2011-8-16 20:18 编辑
很简单~ 在set /p后面用if来判断是否无内容的,最好来个变量初始化(set name=)- @echo off
- cls
- :a
- echo.
- set name=
- set /p Name="请输入名称:"
- if "%name%"=="" echo 请输入内容&goto a
- :b
- set ok=
- set /p ok="是否验证:"
- if "%ok%"=="" echo 请输入内容&goto b
- echo %Name%,%ok%,>>.\File.txt
- goto :end
复制代码
数字的我等下给你~
作者: raymai97 时间: 2011-8-16 20:24
本帖最后由 raymai97 于 2011-8-16 20:26 编辑
- @echo off
- cls
- :a
- echo.
- set name=
- set /p Name="请输入名称:"
- if "%name%"=="" echo 请输入内容&goto a
- :b
- set ok=
- set /p ok="是否验证:"
- if "%ok%"=="" echo 请输入内容&goto b
- ::加1,如果是0或者非数字,答案自然是1(1+1=2,2+1=3……)
- ::所以加了一个if not "%ok%"=="0"来分辨是不是0,如果不是就进行判断。
- set /a verify=%ok%+1
- if not "%ok%"=="0" if "%verify%"=="1" echo 只可以输入数字&goto b
- echo %Name%,%ok%,>>.\File.txt
- goto :end
复制代码
作者: yuelaner 时间: 2011-8-17 01:27
回复 3# raymai97
测试了,但发现一个不好的地方。
就是第一次输入:你好,然后再输入数字。
到第二次输入:你好,然后再输入数字。
那么文件就有两个你好。
而不是用第二次结果替换第一次的结果。
效果:
第一次输入:你好 + 数字:58441
结果:
当如果第二次输入一样的名称:你好 + 但数字不一样了:81101
结果:
请问如何能替换结果?
而不是生成两个相同的名字。
作者: yuelaner 时间: 2011-8-17 02:01
后来自己加多个if + for ,可以替换了。
还是非常感谢 raymai97 ,让我回忆起部分代码。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |