Board logo

标题: [文本处理] [已解决]批处理如何从多个txt文本批量取补集? [打印本页]

作者: 思想之翼    时间: 2012-7-8 09:50     标题: [已解决]批处理如何从多个txt文本批量取补集?

有若干txt文本,每个txt文本只记录了一行0-9的数据,现在需要批量求每个文本的补集。比如:一个命名为01的txt文本,记录的数据是12,其相对于0123456789的补集是03456789,该文本批处理后命名为01-1,记录的数据是03456789。将批处理后的文本放在一个新建的文件夹中。恳望大师出手相助!
作者: poter    时间: 2012-7-8 10:49

不知道能不能满足你的要求,其实转变思路就很简单
@echo off
setlocal enableDelayedExpansion
set /p str=<01.txt
set str1=0123456789
call set "str1=%%str1:!str!=%%"
echo !str1!>01-1.txt
作者: weichenxiehou    时间: 2012-7-8 11:22

本帖最后由 weichenxiehou 于 2012-7-8 11:28 编辑

回复 2# poter
我发现你回帖没有养成将代码括起来的习惯哦,热情很高,值得鼓励,但也要适当注意一下论坛的规则,用【code】和【/code】(这里中括号为英文状态下的)将代码括起来或者使用回复框里的“代码”按钮。鄙人不是管理人员,只是友善地提醒一下,原来管理层打压这些不规范现象很严厉的,现在稍微有点儿放松了。
作者: apang    时间: 2012-7-8 11:25

本帖最后由 apang 于 2012-7-8 11:50 编辑

是不是这意思:
  1. @echo off&setlocal enabledelayedexpansion
  2. md result 2>nul
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   set str=0123456789&set n=0
  5.   set/p m=<%%a
  6.   call :lp
  7.   echo !str!>"result\%%~na-1%%~xa"
  8. )
  9. goto :eof
  10. :lp
  11. if not "!m:~%n%!"=="" set v=!m:~%n%,1!&call set str=%%str:!v!=%%&set/a n+=1&goto :lp
复制代码

作者: 思想之翼    时间: 2012-7-8 11:40

谢谢!这么快就回帖!代码完美解决问题!运行速度也快!
作者: yangfengoo    时间: 2012-7-8 12:30

  1. @echo off&setlocal enabledelayedexpansion
  2. md new
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   for /l %%b in (0 1 9) do find "%%b" "%%a" >nul||set n=!n!%%b
  5.   echo,!n!>new\%%~na-1.txt&set n=
  6. )
  7. pause
复制代码

作者: poter    时间: 2012-7-8 13:02

回复 3# weichenxiehou


    谢谢你,但我发现那个标签框不是太好用,点选复制代码,然后再粘贴到txt里全是格式错乱

另外如果在代码框里用框选,复制粘贴到文本,除了第一行外,其余行都会多出一个空格

所以不太习惯那个东西
作者: weichenxiehou    时间: 2012-7-8 20:38

回复 7# poter
哦,你那里复制有这些问题吗?我这里复制没有任何问题,不过我是用的ie,可能你用的其他浏览器吧,还是尽量括起来吧,美观不说,别人复制可能没问题哦。
作者: Batcher    时间: 2012-7-9 11:51

回复 7# poter


    你使用的是什么浏览器?哪个版本?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2