[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off & setlocal enableDelayedExpansion
  2. set nl=^
  3. set dataSet=!nl!
  4. for /l %%i in (1 1 0xffff) do (
  5.   set /p var="Please input a new data No. %%i: "
  6.   for %%v in (!var!) do (
  7.     if "!dataSet:%%v-=!"=="!dataSet!" (
  8.       echo It's a new data.!nl!
  9.     ) else (
  10.       echo This data: %%v has been entered:
  11.       for /f "delims=" %%s in ("!dataSet!") do (
  12.         set sect=%%s
  13.         if not "!sect:%%v-=!"=="!sect!" echo No. !sect:%%v-=!
  14.       )
  15.       echo.
  16.     )
  17.     set dataSet=!dataSet!%%v-%%i!nl!
  18.   )
  19. )
复制代码

TOP

本帖最后由 neorobin 于 2011-5-9 01:04 编辑

!dataSet:%%v-=!
是变量替换的形式, 例如, 当前变量 dataSet 的值是:
新行0943-1新行0765-2新行0943-3新行
而 %%v 的值是
0943
这里替换就是 把 dataSet 内容里的 0943-都替换成 "空"
那么 !dataSet:%%v-=! 就会是:
新行1新行0765-2新行3新行

相对于你手工录入的速度, 200 个数据(元素字符串长度也不过5,6位)的数组(实为一个长字符串)用 for 来处理的耗时你根本就感觉不出来的.
你的需要仍不太清楚, 要不要接受重复录入的数据?

不接受重复录入的代码很简单一些:
  1. @echo off & setlocal enableDelayedExpansion
  2. set dataSet=,
  3. set cnt=0
  4. for /l %%i in (0 0 0) do (
  5.   cls & color 07 & echo dataSet (!cnt! items^): !dataSet:~1,-1!
  6.   set /a cnt+=1
  7.   echo. & set /p var="Please input the No. !cnt! data: "
  8.   for %%v in (!var!) do (
  9.     if "!dataSet:,%%v,=!"=="!dataSet!" (
  10.       set dataSet=!dataSet!%%v,
  11.     ) else (
  12.       color 0c
  13.       echo This data: %%v has been entered: & pause
  14.       set /a cnt-=1
  15.     )
  16.   )
  17. )
复制代码
2

评分人数

TOP

返回列表