标题: [文本处理] 批处理怎样实现两个文本之间相互插入? [打印本页]
作者: shenglong2011 时间: 2011-11-19 01:01 标题: 批处理怎样实现两个文本之间相互插入?
现在有这么一个问题需要解决:
现在有A.txt文本和 B文件夹(里面装了好几百个txt文档)
a.txt和b文件夹在同一个目录下面。
a.txt里面放了很多的文字。
现在想把a里面的每行的文字分别插入到 b文件夹其中一个txt文档里面(位置是随机的)
a.txt里面的第一行文字插入到B文件夹其中一个文档,第二行文字插入到b文件夹中另外一个文档中,插入的时候不要弄重复了就行,保证B文件夹中文档只插入一次。
附件里面这里只是举个例子。 b文件夹中的文本数量比这个多。
附件里面都弄好了。 把a文本某一行的内容插入到b文件夹中的文本里面去。
作者: weichenxiehou 时间: 2011-11-19 08:44
回复 1# shenglong2011
那么这一行文本到底插入到b文件夹内文本的什么位置呢?开始、中间还是结尾?
作者: shenglong2011 时间: 2011-11-19 14:34
随机的地方啊。 中间也行。。。
QQ:530063666 急需解决。
作者: CrLf 时间: 2011-11-19 14:36
回复 3# shenglong2011
插入到随机行很麻烦的,能否附加到文件末尾?
作者: shenglong2011 时间: 2011-11-19 15:02
插入到中间可以。 末尾不行。
作者: shenglong2011 时间: 2011-11-19 15:03
版主。 能加qq么。
作者: CrLf 时间: 2011-11-19 15:05
回复 6# shenglong2011
就在帖子里说吧,一个人的智慧怎及得上整个论坛的智慧呢?
作者: shenglong2011 时间: 2011-11-19 15:09
那插入到中间怎么处理啊???
作者: shenglong2011 时间: 2011-11-19 15:21
本帖最后由 CrLf 于 2011-11-20 11:13 编辑
这里只是举个例子。 b文件夹中的文本数量比这个多。
附件里面都弄好了。 把a文本某一行的内容插入到b文件夹中的文本里面去。
————————————————————————————————————
为节省论坛空间,将原附件删除,见顶楼更新。 by Crlf
作者: CrLf 时间: 2011-11-19 15:23
回复 9# shenglong2011
请把所有要求集中更新到顶楼,方便大家一次性弄明白
作者: shenglong2011 时间: 2011-11-19 15:24
弄个好了。 都在上面。
作者: 545810831 时间: 2011-11-19 19:21
a文本某一行的内容插入到b文件夹中的文本里面可能是第一行或末尾行,总之是其中任意一行, 总之还是可能出错,还请多测试几下- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set /a m+=1
- set a!m!=%%i
- )
- for /f "delims=" %%i in ('dir /b b\*.txt') do (
- set /a n+=1
- set b!n!=%%i
- )
- :sta
- set /a nn+=1
- set num=0
- for /f "tokens=3" %%i in ('find /v /c "" "b\!b%nn%!"') do (
- set /a ran=!random!%%%%i+1
- echo !ran!
- )
- for /f "usebackq delims=" %%a in ("b\!b%nn%!") do (
- set /a num+=1
- echo %%a
- if !num! equ !ran! echo !a%nn%!
- )>>!b%nn%!
- )
- if !nn! lss !n! goto sta
- pause
-
复制代码
作者: shenglong2011 时间: 2011-11-19 20:40
谢谢了。 测试了下。成功了。
作者: powerbat 时间: 2011-11-19 22:39
- @set @n=0//&cscript.exe -e:jscript "%~f0"&exit /b
-
- file = "a.txt";
- folder = "."; //当前目录
-
- fso = new ActiveXObject("Scripting.FileSystemObject");
- f = fso.GetFolder(folder);
- fc = new Enumerator(f.files);
- files = [];
- for (i=0; !fc.atEnd(); fc.moveNext()) {
- fp = fc.item().Path;
- if(fp.slice(-4).toLowerCase()==".txt") files[i++] = fp;
- }
- texts = fso.OpenTextFile(file).ReadAll().split("\r\n");
- for (i=0; i<files.length; i++)
- {
- a = fso.OpenTextFile(files[i]).ReadAll().split("\r\n");
- a.splice(parseInt(Math.random()*a.length), 0, texts[i]);
- fso.OpenTextFile(files[i]+"~").write(a.join("\r\n"));
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |