标题: [文本处理] 【已解决】BAT或VBS:如何依据条件组合文本内的数据 [打印本页]
作者: 思想之翼 时间: 2015-4-5 02:06 标题: 【已解决】BAT或VBS:如何依据条件组合文本内的数据
本帖最后由 思想之翼 于 2015-4-5 13:37 编辑
D:/数据/内有若干文本,各文本内的数据格式如下:
8 9 7 0 4 1 6 0 7 2
现在欲依据条件,批量组合各文本内的数据:
比如文本数据是 8 9 7 0 4 1 6 0 7 2
1、去除重复数据,得到 8 9 7 0 4 1 6 2
2、统计去重复后的数据个数共有8个
3、8-2=6,则上述8个数字 按6个数字为一组 进行全组合,共得28组
4、将28组数据覆盖文本原数据,保留文本原名称不变
【上述步骤不需一一显示,只需直接得到最终结果】
再比如文本数据是 5 5 3 3 0 9 2 1 0 9
1、去除重复数据,得到 5 3 0 9 2 1
2、统计去重复后的数据个数共有6个
3、6-2=4,则上述6个数字 按4个数字为一组 进行全组合,共得15组
4、将15组数据覆盖文本原数据,保留文本原名称不变
【上述步骤不需一一显示,只需直接得到最终结果】
这样批量组合各文本数据的代码如何写?恳望帮助!
作者: xxpinqz 时间: 2015-4-5 11:43
兄台,又见到你啦。
作者: apang 时间: 2015-4-5 12:37
- @echo off & setlocal enabledelayedexpansion
- pushd "D:\数据\"
- for /f "delims=" %%i in ('dir /b *.txt') do (
- (for /f "usebackq delims=" %%a in ("%%i") do (
- set "s1=%%a"
- set "s2="
- for /l %%b in (0 1 9) do (
- if "!s1:%%b=!" NEQ "!s1!" set "s2=!s2! %%b"
- )
- for %%b in (!s2!) do (
- for %%c in (!s2:*%%b^=!) do (
- set "s=!s2: %%b=!"
- set "s=!s: %%c=!"
- if defined s echo,!s:~1!
- )
- )
- ))>$
- move $ "%%i"
- )
- pause
复制代码
作者: cobat 时间: 2015-4-5 13:24
本帖最后由 cobat 于 2015-4-5 13:38 编辑
- @echo off&pushd "d:\数据"
- for /f "delims=" %%i in ('dir/a-d/b *.txt') do (
- (for /f "usebackq delims=" %%j in ("%%i") do (
- setlocal enabledelayedexpansion
- for %%a in (%%j) do if !.%%a!.==. set .%%a=1&set "s1=!s1!%%a "
- for %%a in (!s1!) do for %%b in (!s1:*%%a^=!) do (
- set "s2=!s1:%%a =!"&echo !s2:%%b =!
- )
- endlocal
- ))>$
- move $ "%%i"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |