Board logo

标题: [其他] 批处理命令set怎样直接回车取默认值? [打印本页]

作者: cyy998    时间: 2012-12-17 21:06     标题: 批处理命令set怎样直接回车取默认值?

刚学的新手,一个set命令的问题,折腾了好久,请高人指点一下代码如下:
  1. set /p time1=请输入时间1:
  2. set /p time2=请输入时间2:
  3. set /p time3=请输入时间3:
  4. set /p time4=请输入时间4:
复制代码
现在我的问题是:我想给这几个变量赋一个默认值,在提示输入的时候既可以手动输入一个值,也可以直接回车取默认值。
曾经想过这样:
  1. set time1=5
  2. set time2=5
  3. set time3=5
  4. set time4=5
  5. set /p time1=请输入时间1:
  6. set /p time2=请输入时间2:
  7. set /p time3=请输入时间3:
  8. set /p time4=请输入时间4:
复制代码
但又觉得太繁琐,而且直接回车不能返回这个默认值,记得以前有人教过我一个很简单的参数,但时间太长了实在记不起来了,还请各位高手帮忙一下,先谢过了。
作者: weichenxiehou    时间: 2012-12-17 22:06

本帖最后由 weichenxiehou 于 2012-12-17 22:07 编辑
  1. set/p time1=请输入时间1:
  2. if not defined time1 set time1=100
  3. set/p time2=请输入时间2:
  4. if not defined time2 set time1=200
  5. ...
复制代码

作者: cyy998    时间: 2012-12-17 23:13

非常感谢,已经试过可行,其实之前也想过类似的方法如:
  1. set/p time1=请输入时间1:
  2. if "%time1%"=="" set time1=100
  3. set/p time2=请输入时间2:
  4. if "%time2%"=="" set time1=200
  5. ...
复制代码
不过您的方法也简单易懂,再次感谢!
作者: 悬崖之树    时间: 2012-12-20 17:35

看看我的程序,为什么会达不到要求?
  1. @echo off &setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 4 ) do (
  3.     set /p time%%i=请输入时间%%i:
  4.     if not defined time%%i call :s
  5. )
  6. goto :out
  7. :s
  8. if %%i==1 set time1=5  
  9. if %%i==2 set time2=7
  10. if %%i==3 set time3=6
  11. if %%i==4 set time4=8
  12. goto :eof
  13. :out
  14. for /l %%i in (1 1 4) do (
  15.     echo time%%i的值是 !time%%i!
  16. )
  17. pause
复制代码





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