找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: 灯塔彭于晏

[文本处理] 提取内容,组合与合并方向的批处理,谢谢您

[复制链接]
 楼主| 发表于 2021-6-6 18:42:02 | 显示全部楼层

【已解决】 求助特定字符复制到指定位置的代码。 谢谢WHY

本帖最后由 灯塔彭于晏 于 2021-6-6 19:23 编辑

请帮帮忙, 下面是4组内容(实际会有很多组。 每组4行,每组之间没有空行)。 每组内容中的第三行,有一个词是被#标记的。 请将每组内容中#与英文逗号之间的词,复制到每组内容的第一行中的  [@@]处。
被标记的#号词中的#号会消失。
  1. Shine - wlop的[@@]啊
  2. <div class="tip2"><div class="goodbobopic">Shine by wlop <div class="user-info">
  3. ,   狮子   ,   #身体链      ,   美女和野兽,   赤脚   ,
  4. 86261514
  5. 11月24日 - ろるあ/Rolua的[@@]啊
  6. <div class="tip2"><div class="goodbobopic">Twitter:主页:twitter.com/Rolua_N
  7. ,   车厢内   ,   光影   ,   #巴士   ,   水手服   ,   女高中生      ,
  8. 71820780
  9. 海边の大** - 兎ipoi的[@@]啊
  10. <div class="tip2"><div class="goodbobopic">海边の大** by 兎ipoi
  11. ,   Virtual YouTuber 10000+ 收藏   ,   #泳装   ,   百鬼绫目   ,   
  12. 83751980
  13. Recital - RH/お仕事募集中的[@@]啊
  14. <div class="tip2"><div class="goodbobopic">Recital by RH/お仕事募集中
  15. ,   白色连衣裙      ,   蝴蝶   ,   #女孩   ,
  16. 75393724
复制代码
举一个例子,如下:
Shine - wlop的身体链啊
<div class="tip2"><div class="goodbobopic">Shine by wlop <div class="user-info">
,   狮子   ,   身体链      ,   美女和野兽,   赤脚   ,
86261514
……

很久以前在论坛里求过一段代码,一直拿来用在相似的场景。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in (b.txt) do (
  4.     set "s=%%i"
  5.     if "!s:>#<=!" NEQ "!s!" (
  6.         set /p "n="
  7.         for %%j in ("!n!") do set "s=!s:>#<=>%%~j<!"
  8.     )
  9.     echo;!s!
  10. )) < a.txt
  11. pause
复制代码
其他场景里都可以把2个文本的内容,按顺序依次插入到符号里。 但今天,是每个位置都插入全部的内容。
所以来请大哥哥们帮忙一下。
谢谢了。
 楼主| 发表于 2021-6-6 18:42:58 | 显示全部楼层
【第三行的每个 , 逗号之间,会存在空格】
发表于 2021-6-6 19:00:50 | 显示全部楼层
回复 28# 灯塔彭于晏
  1. var srcDir = 'E:\\Test\\IMG'; //存放照片的文件夹路径
  2. var arr = [];

  3. var fso = new ActiveXObject('Scripting.FileSystemObject');
  4. var img = new ActiveXObject('WIA.ImageFile');
  5. var e = new Enumerator(fso.GetFolder(srcDir).Files);

  6. for (;!e.atEnd();e.moveNext()) {
  7.     var file = e.item().Path;
  8.     if (!/\.(?:jpg|png)$/i.test(file)) continue;
  9.     img.LoadFile(file);
  10.     var w = 1 * img.Width;
  11.     var h = 1 * img.Height;
  12.     if (w > 1700 && h > 1000) arr.push(e.item().Name);
  13. }

  14. var wshShell = new ActiveXObject('WScript.Shell');
  15. var listFile = wshShell.SpecialFolders('Desktop') + '\\c.txt';   //文件列表
  16. fso.OpentextFile(listFile, 2, true).WriteLine(arr.join('\r\n'));

  17. WSH.Echo('Done');
复制代码
发表于 2021-6-6 19:03:25 | 显示全部楼层
本帖最后由 WHY 于 2021-6-6 19:10 编辑

回复 30# 灯塔彭于晏
  1. var srcFile = '1.txt';     //源文件名
  2. var dstFile = '2.txt';     //目标文件名

  3. var fso = new ActiveXObject('Scripting.FileSystemObject');
  4. var str = fso.OpentextFile(srcFile, 1).ReadAll();
  5. str = str.replace(/\[@@\]([^#]+)#(\S+)/g, '$2$1$2');
  6. fso.OpentextFile(dstFile, 2, true).Write(str);

  7. WSH.Echo('Done')
复制代码

评分

参与人数 1技术 +1 收起 理由
灯塔彭于晏 + 1 强无敌!

查看全部评分

 楼主| 发表于 2021-6-7 11:11:34 | 显示全部楼层
本帖最后由 灯塔彭于晏 于 2021-6-7 11:13 编辑

回复 34# WHY


    请问,如果
  1. ,   车厢内   ,   光影   ,   #巴士   ,   水手服   ,   女高中生      ,
复制代码
中的 # 和 巴士 之间有空格,在抓取时能自动忽略掉空格吗?
比如:
  1. ,   车厢内   ,   光影   ,   #  巴士   ,   水手服   ,   女高中生      ,
复制代码
,这样也会识别出 巴士 字样。
现在有空格并不会识别出文字!

其次,是如果文字后面紧跟一个逗号,比如
  1. #巴士,
复制代码
而不是
  1. #巴士    ,
复制代码
那么这个逗号也会被识别。能否给取消掉?
--- 邪恶分割线 ---
需要改代码的哪个部分呢?谢谢!

谢谢!谢谢!
发表于 2021-6-7 12:38:05 | 显示全部楼层
本帖最后由 WHY 于 2021-6-7 12:43 编辑

回复 35# 灯塔彭于晏
  1. str = str.replace(/\[@@\]([^#]+)# *([^,]*\S)(?= *,)/g, '$2$1$2');
复制代码

评分

参与人数 1技术 +1 收起 理由
灯塔彭于晏 + 1 谢谢您!

查看全部评分

 楼主| 发表于 2021-7-11 12:23:04 | 显示全部楼层
回复 34# WHY


    您好,WHY,根据您之前的代码,能否再加上一个条件。 源代码如下:
  1. var srcFile = 'charu2.txt';     //源文件名
  2. var dstFile = 'wanjie.txt';     //目标文件名

  3. var fso = new ActiveXObject('Scripting.FileSystemObject');
  4. var str = fso.OpentextFile(srcFile, 1).ReadAll();
  5. str = str.replace(/\[@@\]([^#]+)# *([^,]*\S)(?= *,)/g, '$2$1$2');
  6. fso.OpentextFile(dstFile, 2, true).Write(str);
复制代码
内容模板如下:(之前是提取#号次到1个[@@]中。 现在又额外添加了2处[@@]位置。 想实现效果如末尾。
  1. Shine - wlop的[@@]啊
  2. <div class="tip2"><div class="good1">Shine by wlop [@@] 。无敌的 [@@] <div class="user-info">
  3. ,   狮子   ,   #身体链      ,   美女和野兽,   赤脚   ,
  4. 86261514
  5. 11月24日 - ろるあ/Rolua的[@@]啊
  6. <div class="tip2"><div class="good1">Twitter:主 [@@]   。无敌的 [@@]页:twitter.com/Rolua_N
  7. ,   车厢内   ,   光影   ,   #巴士   ,   水手服   ,   女高中生      ,
  8. 71820780
  9. 海边の大** - 兎ipoi的[@@]啊
  10. <div class="tip2"><div class="good1">海边の大** by [@@]   。无敌的 [@@]兎ipoi
  11. ,   Virtual YouTuber 10000+ 收藏   ,   #泳装   ,   百鬼绫目   ,   
  12. 83751980
  13. Recital - RH/お仕事募集中的[@@]啊
  14. <div class="tip2"><div class="good1">Recital by RH/お仕事募集 [@@] 中 , 。无敌的 [@@]
  15. ,   白色连衣裙      ,   蝴蝶   ,   #女孩   ,
  16. 75393724
复制代码
  1. Shine - wlop的身体链啊
  2. <div class="tip2"><div class="good1">Shine by wlop 身体链。无敌的  身体链 <div class="user-info">
  3. ,   狮子   ,   #身体链      ,   美女和野兽,   赤脚   ,
  4. 86261514
  5. 11月24日 - ろるあ/Rolua的巴士啊
  6. <div class="tip2"><div class="good1">Twitter:主 巴士  。无敌的巴士页:twitter.com/Rolua_N
  7. ,   车厢内   ,   光影   ,   #巴士   ,   水手服   ,   女高中生      ,
  8. 71820780
  9. 海边の大** - 兎ipoi的泳装啊
  10. <div class="tip2"><div class="good1">海边の大** by泳装  。无敌的  泳装兎ipoi
  11. ,   Virtual YouTuber 10000+ 收藏   ,   #泳装   ,   百鬼绫目   ,   
  12. 83751980
  13. Recital - RH/お仕事募集中的女孩啊
  14. <div class="tip2"><div class="good1">Recital by RH/お仕事募集 女孩中 , 。无敌的 女孩
  15. ,   白色连衣裙      ,   蝴蝶   ,   #女孩   ,
  16. 75393724
复制代码
1个词对应3个位置,谢谢您啦。 周末愉快!
发表于 2021-7-12 23:13:36 | 显示全部楼层
回复 37# 灯塔彭于晏
  1. var srcFile = '1.txt';     //源文件名
  2. var dstFile = '2.txt';     //目标文件名

  3. var fso = new ActiveXObject('Scripting.FileSystemObject');
  4. var str = fso.OpenTextFile(srcFile, 1).ReadAll();
  5. str = str.replace(
  6.     /([^#]+)# *([^\r\n,]+?)(?= *,)/g,
  7.     function(s0, s1, s2){
  8.         s1 = s1.replace(/\[@@\]/g, s2);
  9.         return s1 + s2;
  10.     }
  11. )

  12. fso.OpenTextFile(dstFile, 2, true).Write(str);
复制代码

评分

参与人数 1技术 +1 收起 理由
灯塔彭于晏 + 1 炒鸡完美!!!谢谢

查看全部评分

 楼主| 发表于 2021-7-17 00:28:44 | 显示全部楼层
回复 38# WHY


    您好WHY,又来骚扰了。 周末愉快!  

有一段代码,如下:
共有4组内容,每组内容有6行。 在第5行中,会出现被#号标记的词。
  1. Shine - wlop的[@@]啊
  2. <div class="tip2"><div class="good1">Shine by wlop [@@] 。无敌的 [@@] <div class="user-info">
  3. [@@]

  4. ,   狮子   ,   #身体链      ,   美女和野兽,   赤脚   ,
  5. 86261514
  6. 11月24日 - ろるあ/Rolua的[@@]啊
  7. <div class="tip2"><div class="good1">Twitter:主 [@@]   。无敌的 [@@]页:twitter.com/Rolua_N
  8. [@@]

  9. ,   车厢内   ,   光影   ,   #巴士   ,   水手服   ,   女高中生      ,
  10. 71820780
  11. 海边の大** - 兎ipoi的[@@]啊
  12. <div class="tip2"><div class="good1">海边の大** by [@@]   。无敌的 [@@]兎ipoi
  13. [@@]

  14. ,   Virtual YouTuber 10000+ 收藏   ,    泳装   ,   百鬼绫目   ,   
  15. 83751980
  16. Recital - RH/お仕事募集中的[@@]啊
  17. <div class="tip2"><div class="good1">Recital by RH/お仕事募集 [@@] 中 , 。无敌的 [@@]
  18. [@@]

  19. ,   白色连衣裙      ,   蝴蝶   ,   #女孩   ,
  20. 75393724
复制代码
如何用JS的形式,检测出第3组中没有#号词,并在桌面文本1.txt中列出具体的所在行数。 如上面的案例,会在1.txt中写1个17 。
如果存在多个,依次排列写出。

谢谢您啦。
发表于 2021-7-18 10:35:05 | 显示全部楼层
回复 39# 灯塔彭于晏
  1. var srcFile = 'E:\\Test\\a.txt';     //源文件路径
  2. var dstFile = new ActiveXObject('WScript.Shell').SpecialFolders('Desktop') + '\\1.txt'; //目标文件路径

  3. var arr = [], i = 0;
  4. var fso = new ActiveXObject('Scripting.FileSystemObject');
  5. var objFile = fso.OpenTextFile(srcFile, 1);

  6. while (!objFile.AtEndOfStream){
  7.     var s = objFile.ReadLine();
  8.     if ( ++i % 6 == 5 && s.indexOf('#') < 0 ) arr.push(i);
  9. }

  10. fso.OpenTextFile(dstFile, 2, true).Write(arr.join('\r\n'));
复制代码
发表于 2021-7-18 13:02:24 | 显示全部楼层
回复 13# qixiaobin0715


    什么是伸手党
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:54 , Processed in 0.032732 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表