![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决]批处理如何查找排序后数列的缺少项? [打印本页]
作者: januapr 时间: 2009-8-23 18:53 标题: [已解决]批处理如何查找排序后数列的缺少项?
123.txt文件内容如下:- 0001
- 0002
- 0003
- 0004
- 0005
- 0007
- 0009
- 0010
- 0015
- 0016
- 0017
- 0021
- 0023
- 0024
- 0025
- 0028
- 0029
- 0030
复制代码
这些都是固定的4位数字,把它们从小到大排序后往往有一些数缺少了,
从而造成这个数列并不是连续数的数列,请问如何找出其中缺少了的数?
[ 本帖最后由 januapr 于 2009-8-23 22:47 编辑 ]
作者: 基拉freedom 时间: 2009-8-23 21:14
- for /l %%i in (1 1 30) do (
- set p=000000%%i
- set p=!p:~-4!
- find “!p!” 123.txt>nul||echo !p!
- )
复制代码
这样吗?
[ 本帖最后由 基拉freedom 于 2009-8-23 21:17 编辑 ]
作者: tireless 时间: 2009-8-23 21:55
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=* delims=0" %%a in (123.txt) do (
- set %%a=.
- set end=%%a
- )
-
- set /p start=<123.txt
- for /f "tokens=* delims=0" %%a in ("%start%") do set start=%%a
- for /l %%b in (%start% 1 %end%) do (
- if not defined %%b (
- set var=000%%b
- echo !var:~-4!
- )
- )
- pause
- exit
复制代码
- @echo off
- if "%~1"=="echo" goto echo
- for /f %%a in ('"%~f0" echo ^| findstr /vg:123.txt') do echo %%a
- pause
- exit
-
- :echo
- setlocal enabledelayedexpansion
- set /p start=<123.txt
- for /f %%a in (123.txt) do set end=%%a
- for /l %%a in (1%start% 1 1%end%) do (
- set var=%%a
- echo !var:~1!
- )
复制代码
[ 本帖最后由 tireless 于 2009-8-23 22:23 编辑 ]
作者: januapr 时间: 2009-8-23 22:27 标题: 回复 2楼 的帖子
先谢谢二楼的朋友,你的方法可以解决问题了!
有个小建议,以后把代码写完整嘛,要不新入门的朋友又看不懂了,呵呵!- @echo off
- for /l %%i in (1 1 30) do (
- setlocal enabledelayedexpansion
- set p=000000%%i
- set p=!p:~-4!
- find "!p!" 123.txt>nul||echo !p!
- endlocal
- )
- pause
复制代码
偷偷的告诉你,
“!p!” 123这里你用了两个空格相信是你的手误,嘻嘻!
作者: 基拉freedom 时间: 2009-8-23 22:31
恩 lz的建议会听的^_^
作者: januapr 时间: 2009-8-23 22:44 标题: 回复 3楼 的帖子
非常高效呀!
先谢谢了!
但由于水平有限,我还要慢慢看才能看得明!。。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |