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

回复 56# 77七
我的失误,没有表达清楚。有人习惯月份日期是个位数时前面加个0,都变成两位数;有人不习惯加0补位,直接写。我要表达的是,两种不能混合写,比如1月1日,要么写成01/01或者1/1,而不能写成01/1或1/01。

TOP

回复 58# 77七
是的,这里只是对1个数据进行判断,不考虑效率没问题,像你先前所说的全定义更简单。

TOP

回复 58# 77七
实际上不喜欢为了让别人看起来自己写的代码行数较少,而强行将多行变成一行,比较喜欢你的风格,虽然从行数上看代码较长,但是一目了然,清清楚楚,最近我好像也有点给带偏了。
给自己代码较长强行找点理由。既然对于这个问题来说,效率不是那么重要,就来个数据全定义代码,这样子判断起来就简单多了,要是有空的话,帮忙测试一下耗时情况:
  1. @echo off
  2. for /l %%i in (1,1,12) do (
  3.     for /l %%j in (1,1,31) do (
  4.         if %%i lss 10 (
  5.             if %%j lss 10 (
  6.                 set _"%%i/%%j"=0
  7.                 set _"0%%i/0%%j"=0
  8.             ) else (
  9.                 set _"%%i/%%j"=0
  10.                 set _"0%%i/%%j"=0
  11.             )
  12.         ) else (
  13.             if %%j lss 10 (
  14.                 set _"%%i/%%j"=0
  15.                 set _"%%i/0%%j"=0
  16.             ) else (
  17.                 set _"%%i/%%j"=0
  18.             )
  19.         )
  20.     )
  21. )
  22. for %%i in (2 4 6 9) do (
  23.     set _"%%i/31"=
  24.     set _"0%%i/31"=
  25. )
  26. set _"11/31"=
  27. set _"2/30"=
  28. set _"02/30"=
  29. setlocal enabledelayedexpansion
  30. :o
  31. set/p "md=Please Input the Date (MM/DD):"
  32. if defined _"!md!" (
  33.     echo,Input Correct
  34. ) else (
  35.     echo,Input Error
  36.     goto :o
  37. )
  38. pause
复制代码

TOP

回复 63# 77七
不好说,毕竟每次执行defined时都要从大量的预定义的变量中查找符合条件的变量。

TOP

回复 65# 77七
还是相信测试吧。

TOP

回复 68# 77七
那就用goto循环语句测试一下试试。

TOP

回复 72# 77七
谢谢测试,对此种效率有了更进一步的了解。

TOP

返回列表