找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29252|回复: 3

[其他] 批处理命令set怎样直接回车取默认值?

[复制链接]
发表于 2012-12-17 21:06:36 | 显示全部楼层 |阅读模式
刚学的新手,一个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:
复制代码
但又觉得太繁琐,而且直接回车不能返回这个默认值,记得以前有人教过我一个很简单的参数,但时间太长了实在记不起来了,还请各位高手帮忙一下,先谢过了。
发表于 2012-12-17 22:06:08 | 显示全部楼层
本帖最后由 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. ...
复制代码
 楼主| 发表于 2012-12-17 23:13:23 | 显示全部楼层
非常感谢,已经试过可行,其实之前也想过类似的方法如:
  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:25 | 显示全部楼层
看看我的程序,为什么会达不到要求?
  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

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 20:19 , Processed in 0.011575 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表