标题: [文本处理] [已解决]批处理如何从多个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 编辑
是不是这意思:- @echo off&setlocal enabledelayedexpansion
- md result 2>nul
- for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
- set str=0123456789&set n=0
- set/p m=<%%a
- call :lp
- echo !str!>"result\%%~na-1%%~xa"
- )
- goto :eof
-
- :lp
- 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
- @echo off&setlocal enabledelayedexpansion
- md new
- for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
- for /l %%b in (0 1 9) do find "%%b" "%%a" >nul||set n=!n!%%b
- echo,!n!>new\%%~na-1.txt&set n=
- )
- 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 |