[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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,

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

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

TOP

回复 3# raymai97


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

你好,85426,
你好,54110,


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

效果:

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


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

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


请问如何能替换结果?
而不是生成两个相同的名字。

TOP

本帖最后由 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
复制代码
1

评分人数

为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

本帖最后由 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
复制代码
数字的我等下给你~
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

返回列表