Board logo

标题: [文本处理] [已解决]如何使批处理必须输入内容,不可以直接回车 [打印本页]

作者: yuelaner    时间: 2011-8-16 19:54     标题: [已解决]如何使批处理必须输入内容,不可以直接回车

本帖最后由 yuelaner 于 2011-8-17 02:00 编辑

写文件的批处理。
  1. @echo off
  2. echo.
  3. set /p Name="请输入名称:"
  4. set /p ok="是否验证:"
  5. echo %Name%,%ok%,>>.\File.txt
  6. 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=)
  1. @echo off
  2. cls
  3. :a
  4. echo.
  5. set name=
  6. set /p Name="请输入名称:"
  7. if "%name%"=="" echo 请输入内容&goto a
  8. :b
  9. set ok=
  10. set /p ok="是否验证:"
  11. if "%ok%"=="" echo 请输入内容&goto b
  12. echo %Name%,%ok%,>>.\File.txt
  13. goto :end
复制代码
数字的我等下给你~
作者: raymai97    时间: 2011-8-16 20:24

本帖最后由 raymai97 于 2011-8-16 20:26 编辑
  1. @echo off
  2. cls
  3. :a
  4. echo.
  5. set name=
  6. set /p Name="请输入名称:"
  7. if "%name%"=="" echo 请输入内容&goto a
  8. :b
  9. set ok=
  10. set /p ok="是否验证:"
  11. if "%ok%"=="" echo 请输入内容&goto b
  12. ::加1,如果是0或者非数字,答案自然是1(1+1=2,2+1=3……)
  13. ::所以加了一个if not "%ok%"=="0"来分辨是不是0,如果不是就进行判断。
  14. set /a verify=%ok%+1
  15. if not "%ok%"=="0" if "%verify%"=="1" echo 只可以输入数字&goto b
  16. echo %Name%,%ok%,>>.\File.txt
  17. goto :end
复制代码

作者: yuelaner    时间: 2011-8-17 01:27

回复 3# raymai97


测试了,但发现一个不好的地方。
就是第一次输入:你好,然后再输入数字。
到第二次输入:你好,然后再输入数字。

你好,85426,
你好,54110,


那么文件就有两个你好。
而不是用第二次结果替换第一次的结果。

效果:

第一次输入:你好 + 数字:58441
结果:
Name,OK,
你好,58441,


当如果第二次输入一样的名称:你好 + 但数字不一样了:81101

结果:
Name,OK,
你好,81101,


请问如何能替换结果?
而不是生成两个相同的名字。
作者: yuelaner    时间: 2011-8-17 02:01

后来自己加多个if + for ,可以替换了。

还是非常感谢 raymai97 ,让我回忆起部分代码。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2