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

[其他] 批处理命令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: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. ...
复制代码
看得多说得多,远比不上写得多。

TOP

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

TOP

看看我的程序,为什么会达不到要求?
  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
复制代码
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

返回列表