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

[文本处理] 【已解决】BAT或VBS:如何依据条件组合文本内的数据

[复制链接]
发表于 2015-4-5 02:06:44 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 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组数据覆盖文本原数据,保留文本原名称不变
【上述步骤不需一一显示,只需直接得到最终结果】

这样批量组合各文本数据的代码如何写?恳望帮助!
发表于 2015-4-5 11:43:47 | 显示全部楼层
兄台,又见到你啦。
发表于 2015-4-5 12:37:15 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. pushd "D:\数据"
  3. for /f "delims=" %%i in ('dir /b *.txt') do (
  4.         (for /f "usebackq delims=" %%a in ("%%i") do (
  5.                 set "s1=%%a"
  6.                 set "s2="
  7.                 for /l %%b in (0 1 9) do (
  8.                         if "!s1:%%b=!" NEQ "!s1!" set "s2=!s2! %%b"
  9.                 )
  10.                 for %%b in (!s2!) do (
  11.                         for %%c in (!s2:*%%b^=!) do (
  12.                                 set "s=!s2: %%b=!"
  13.                                 set "s=!s: %%c=!"
  14.                                 if defined s echo,!s:~1!
  15.                         )
  16.                 )
  17.         ))>$
  18.         move $ "%%i"
  19. )
  20. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢

查看全部评分

发表于 2015-4-5 13:24:18 | 显示全部楼层
本帖最后由 cobat 于 2015-4-5 13:38 编辑
  1. @echo off&pushd "d:\数据"
  2. for /f "delims=" %%i in ('dir/a-d/b *.txt') do (
  3.     (for /f "usebackq delims=" %%j in ("%%i") do (
  4.         setlocal enabledelayedexpansion
  5.         for %%a in (%%j) do if !.%%a!.==. set .%%a=1&set "s1=!s1!%%a "
  6.         for %%a in (!s1!) do for %%b in (!s1:*%%a^=!) do (
  7.             set "s2=!s1:%%a =!"&echo !s2:%%b =!
  8.         )
  9.         endlocal
  10.     ))>$
  11.     move $ "%%i"
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 10:11 , Processed in 0.020322 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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