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

[文本处理] 【已解决】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组数据覆盖文本原数据,保留文本原名称不变
【上述步骤不需一一显示,只需直接得到最终结果】

这样批量组合各文本数据的代码如何写?恳望帮助!

兄台,又见到你啦。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

  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

评分人数

TOP

本帖最后由 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

评分人数

TOP

返回列表