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

【已解决】 求助特定字符复制到指定位置的代码。 谢谢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个文本的内容,按顺序依次插入到符号里。 但今天,是每个位置都插入全部的内容。
所以来请大哥哥们帮忙一下。
谢谢了。

TOP

【第三行的每个 , 逗号之间,会存在空格】

TOP

回复 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');
复制代码

TOP

本帖最后由 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

评分人数

TOP

本帖最后由 灯塔彭于晏 于 2021-6-7 11:13 编辑

回复 34# WHY


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

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

谢谢!谢谢!

TOP

本帖最后由 WHY 于 2021-6-7 12:43 编辑

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

评分人数

TOP

回复 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个位置,谢谢您啦。 周末愉快!

TOP

回复 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

评分人数

TOP

回复 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 。
如果存在多个,依次排列写出。

谢谢您啦。

TOP

回复 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'));
复制代码

TOP

回复 13# qixiaobin0715


    什么是伸手党

TOP

返回列表