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

[文本处理] 批处理怎样实现两个文本之间相互插入?

现在有这么一个问题需要解决:
现在有A.txt文本和  B文件夹(里面装了好几百个txt文档)

a.txt和b文件夹在同一个目录下面。

a.txt里面放了很多的文字。

现在想把a里面的每行的文字分别插入到 b文件夹其中一个txt文档里面(位置是随机的)

a.txt里面的第一行文字插入到B文件夹其中一个文档,第二行文字插入到b文件夹中另外一个文档中,插入的时候不要弄重复了就行,保证B文件夹中文档只插入一次。

附件里面这里只是举个例子。  b文件夹中的文本数量比这个多。

附件里面都弄好了。   把a文本某一行的内容插入到b文件夹中的文本里面去。

回复 1# shenglong2011
那么这一行文本到底插入到b文件夹内文本的什么位置呢?开始、中间还是结尾?
看得多说得多,远比不上写得多。

TOP

随机的地方啊。  中间也行。。。

QQ:530063666   急需解决。

TOP

回复 3# shenglong2011


    插入到随机行很麻烦的,能否附加到文件末尾?

TOP

插入到中间可以。 末尾不行。

TOP

版主。 能加qq么。

TOP

回复 6# shenglong2011


    就在帖子里说吧,一个人的智慧怎及得上整个论坛的智慧呢?

TOP

那插入到中间怎么处理啊???

TOP

本帖最后由 CrLf 于 2011-11-20 11:13 编辑

这里只是举个例子。  b文件夹中的文本数量比这个多。

附件里面都弄好了。   把a文本某一行的内容插入到b文件夹中的文本里面去。

————————————————————————————————————

为节省论坛空间,将原附件删除,见顶楼更新。  by Crlf

TOP

回复 9# shenglong2011


    请把所有要求集中更新到顶楼,方便大家一次性弄明白

TOP

弄个好了。 都在上面。

TOP

a文本某一行的内容插入到b文件夹中的文本里面可能是第一行或末尾行,总之是其中任意一行, 总之还是可能出错,还请多测试几下
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3. set /a m+=1
  4. set a!m!=%%i
  5. )
  6. for /f "delims=" %%i in ('dir /b b\*.txt') do (
  7. set /a n+=1
  8. set  b!n!=%%i
  9. )
  10. :sta
  11. set /a nn+=1
  12. set num=0
  13. for /f   "tokens=3" %%i in ('find /v /c "" "b\!b%nn%!"') do (
  14. set /a ran=!random!%%%%i+1
  15. echo !ran!
  16. )
  17. for /f "usebackq delims=" %%a in ("b\!b%nn%!") do (
  18. set /a num+=1
  19. echo %%a
  20. if !num! equ !ran! echo !a%nn%!
  21. )>>!b%nn%!
  22. )
  23. if !nn! lss !n! goto sta
  24. pause
复制代码
1

评分人数

TOP

谢谢了。 测试了下。成功了。

TOP

  1. @set @n=0//&cscript.exe -e:jscript "%~f0"&exit /b
  2. file = "a.txt";
  3. folder = "."; //当前目录
  4. fso = new ActiveXObject("Scripting.FileSystemObject");
  5. f = fso.GetFolder(folder);
  6. fc = new Enumerator(f.files);
  7. files = [];
  8. for (i=0; !fc.atEnd(); fc.moveNext()) {
  9.     fp = fc.item().Path;
  10.     if(fp.slice(-4).toLowerCase()==".txt") files[i++] = fp;
  11. }
  12. texts = fso.OpenTextFile(file).ReadAll().split("\r\n");
  13. for (i=0; i<files.length; i++)
  14. {
  15.     a = fso.OpenTextFile(files[i]).ReadAll().split("\r\n");
  16.     a.splice(parseInt(Math.random()*a.length), 0, texts[i]);
  17.     fso.OpenTextFile(files[i]+"~").write(a.join("\r\n"));
  18. }
复制代码
1

评分人数

TOP

返回列表