Board logo

标题: [文本处理] 提取内容,组合与合并方向的批处理,谢谢您 [打印本页]

作者: 灯塔彭于晏    时间: 2021-6-2 13:38     标题: 提取内容,组合与合并方向的批处理,谢谢您

您好,先谢谢您了。
下面的文本的第3 、 4行中,分部着一些中英日语言的词语,每个词用英文逗号隔开。
而其中有些词开头带# ,有些不带。

请帮忙提取# 开头的词,组合排列成1个新的行,插入到第2行的下面,然后删除原来的3 4行所有的内容。从而组成新的内容。

Ao - 凪白みと的插画
Ao by 凪白みと <div class="info"><p>
原创7500收藏,腋下,armed girls,#白发,swordsman
#オリジナル7500users入り,腋,#武器娘,白发,#剑士
90212924

Ao - 凪白みと的插画
Ao by 凪白みと <div class="info"><p>
原创7500收藏,腋下,armed girls,#白发,swordsman
#オリジナル7500users入り,腋,#武器娘,白发,#剑士
90212924


效果如下:
  1. Ao - 凪白みと的插画
  2. Ao by 凪白みと <div class="info"><p>
  3. オリジナル7500users入り,武器娘,白发,剑士
  4. 90212924
  5. Ao - 凪白みと的插画
  6. Ao by 凪白みと <div class="info"><p>
  7. オリジナル7500users入り,武器娘,白发,剑士
  8. 90212924
复制代码
谢谢!!!!
作者: 灯塔彭于晏    时间: 2021-6-2 17:12

注: 并不是只有一组内容, 每组内容间隔 1个空行
作者: 灯塔彭于晏    时间: 2021-6-2 22:36

555555555
大giegie们,谢谢大giegie们了!
作者: qixiaobin0715    时间: 2021-6-2 23:40

用纯批倒是能实现,效率太低,不适合大文件。还是让大佬们来吧。
作者: 灯塔彭于晏    时间: 2021-6-2 23:52

回复 4# qixiaobin0715


    5555 试试嘛。 一次也就100来组(1组5行,如文中的案例,文中那是2组。) ~
作者: qixiaobin0715    时间: 2021-6-3 06:49

本帖最后由 qixiaobin0715 于 2021-6-5 16:13 编辑

回复 5# 灯塔彭于晏
算是抛砖引玉吧,主要是效率太低了,不好意思拿出来。每行都需要进行多次判断;第3/4行每组字符也需要判断,每组字符还要用到循环,最后排序。实际上连抛砖引玉也算不上,只怕抛出土柸把玉给砸了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('findstr /n .* test.txt') do (
  4.     set /a k+=1
  5.     set /a "n=(k-1)%%7+1"
  6.     set "str=%%i"
  7.     set "str=!str:*:=!
  8.     if !n! lss 3 (
  9.         echo,!str!
  10.     ) else if !n! gtr 4 (
  11.         echo,!str!
  12.     ) else (
  13.         set m=100
  14.         for %%j in ("!str:,=","!") do (
  15.             set /a m+=1
  16.             set var=%%~j
  17.             if "!var:~,1!"=="#" set -!m!=!var:~1!
  18.         )
  19.     )
  20.     if !n! equ 4 (
  21.         for /f "tokens=1* delims==" %%a in ('set -') do (
  22.             set "str1=!str1!,%%b"
  23.             set %%a=
  24.         )
  25.         echo,!str1:~1!
  26.         set str1=
  27.     )
  28. )
  29. pause
复制代码

作者: netdzb    时间: 2021-6-3 08:37

本帖最后由 netdzb 于 2021-6-3 10:29 编辑

回复 6# qixiaobin0715

他每次提的问题都是处理网页的标签,别人是帮助过他,
但他水平一直没进步啊。让人看了真有点恨铁不成钢的
感觉,处理网页标签不是用批处理的啊,论坛的python
版块也有例子,perl也能处理这个问题,python我有现在
用的少,我也等看一下有没有大神贴出更好的代码。
作者: newswan    时间: 2021-6-3 09:40

本帖最后由 newswan 于 2021-6-3 09:41 编辑
  1. sed -n -r -e "/#/!p ; /#/ { N ; s'\n','g ; s',',,'g ; s'^|$','g ; s',[^#,]+,''g ; s',#|,$''g ; p}"
复制代码
sed 太累
还可以用 批处理+grep 或者 powershell
作者: qixiaobin0715    时间: 2021-6-3 09:40

回复 7# netdzb
伸手党(不具针对性)在论坛里确实有,但也不是没有一点作用:活跃气氛;解决问题的同时,对自己也是一种提高,教学互长吗。况且从伸手党成长起来的也不在少数。斑竹自有分寸,我们大可不必操太多的心。
作者: netdzb    时间: 2021-6-3 10:29

回复 9# qixiaobin0715

问题是他的问题描述我也没怎么看懂,我如果有时间用python试一下了,目前我在学习js。
作者: newswan    时间: 2021-6-3 10:41

回复 7# netdzb


    思路是很简单,熟悉了工具就没什么难度。
    主要是来练习,学习一下别人的代码,能发现自己的盲点。互相帮助是很好的。
作者: 灯塔彭于晏    时间: 2021-6-3 11:03

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

谢谢您的开放心态!作为伸手党的我,也正是从一开始就觉得这个论坛存在一帮热心助人的代码大神,从而染上了伸手白嫖的坏习惯。
不是不想学,是没时间学。

这些代码都是拿来去做另外一个网站的内容生产了。 而我这么多年和网友们维护那个网站,都是用成型了的开源,比如wordpress,比如宝塔,比如各种奇怪的wp插件。都没人会代码。遇到问题除了咨询伸手,也不可能现学现卖了,那样影响效率~!
一个简单的正则能卡我们一下午,最后的都是懂代码是什么东西的几位同学,从各方拼凑出来的。 还有很多只出钱,根本不懂代码,所以我们几个同学要做的事情太多了, 就根本没有学的精力了。  日常工作完,我们还得维护这个共同的爱好到深夜2点多,能睡个好觉就挺开心的了。

我们内心也是一直很感谢大家的帮助的, 只是的确方式上不好看。 但这不影响我们感谢的心。
谢谢大家,谢谢大家。
作者: qixiaobin0715    时间: 2021-6-3 11:16

当初我也当过2年伸手党
作者: netdzb    时间: 2021-6-3 11:26

本帖最后由 netdzb 于 2021-6-3 11:29 编辑

回复 12# 灯塔彭于晏

我希望能看到你求助贴的半自动模式,我现在主题大都
是半自动模式。别人回复解决了问题,我是在进步的。
你的进步速度一直是零,看的真是让人着急。
作者: 灯塔彭于晏    时间: 2021-6-3 17:05

回复 6# qixiaobin0715


    行数一多,就乱了。
比如默认是5行字为1组,有的就剩3行字了,有的却成6行了,就比较尴尬~!

是不是因为在有的组里,第3和第4行并不都有#号字符, 而代码又是每行都去检索,最后组合的时候就出现了问题?

虽然一般来说第3和第4行里,都会出现#号字符的。但也会出现只有其中1行出现#号字符的情况的。

能否帮忙解决一下?
谢谢!
作者: qixiaobin0715    时间: 2021-6-3 17:34

回复 15# 灯塔彭于晏
应当是源文件出现问题了,自己检查一下,看看是什么情况。把出问题的组发上来看看。
作者: 灯塔彭于晏    时间: 2021-6-3 17:48

回复 16# qixiaobin0715


    好的。我再试试把3 4行都加上#, 试试我的这个想法是不是主要原因。如果还不行,我就发给您看看文案~
作者: newswan    时间: 2021-6-3 18:04

本帖最后由 newswan 于 2021-6-5 14:49 编辑
  1. $file = "asdf22.txt"
  2. [System.Collections.ArrayList]$fileC = get-content -path $file
  3. for ( $i = 0 ; $i -lt $fileC.count -1 ; $i += 1 )
  4. {
  5.     if ( $fileC[$i] -match "#" )
  6.     {
  7.         while ( $fileC[$i+1] -match "#" )
  8.         {
  9.             $fileC[$i] = $fileC[$i] + "," + $fileC[$i+1]
  10.             $fileC.removeat($i+1)
  11.         }
  12.     }
  13. }
  14. for ( $i = 0 ; $i -lt $fileC.count ; $i += 1 )
  15. {
  16.     if ( $fileC[$i] -match "#" )
  17.     {
  18.             $m = select-string "(?<=#)[^,]+(?=,|$)" -allmatches -inputobject  $fileC[$i]
  19.             $fileC[$i] = $m.matches.value -join ","
  20.     }
  21. }
  22. $fileC
复制代码
powershell 处理包含#的行,思路更简单,先合并包含#相邻的行,再处理带#的行
作者: 灯塔彭于晏    时间: 2021-6-3 18:09

回复 16# qixiaobin0715

还是错了。难道是日语的问题?
我3 4行都加入# ,最后也还是错了

http://bbp.cn-sh2.ufileos.com/asdf22.txt

还请您保存一下,谢谢。
我这边上传附件总失败。
作者: qixiaobin0715    时间: 2021-6-3 21:11

回复 19# 灯塔彭于晏
将6楼代码第5行:set /a "n=(k-1)%%6+1" 中的6改为7
数值循环是按1-6进行的,对应每组的行数。示范文本中每组为6行(包括空行),实际上是7行(包括2个空行)。所以会出问题,还是要了解一些批处理的常识,出错就会减少。
作者: netdzb    时间: 2021-6-3 21:44

回复 18# newswan


我看了半天,都没看懂他要做什么?我想测试一下你的powershell的代码了。
作者: netdzb    时间: 2021-6-3 21:55

回复 18# newswan

他的意思是如果文本没有#号就按原样打印,如果有#就打印#号的字符到“,”结束的字符,
是这个意思吗?


原来的文档是这样的

Ao - 凪白みと的插画
Ao by 凪白みと <div class="info"><p>
原创7500收藏,腋下,armed girls,#白发,swordsman
#オリジナル7500users入り,腋,#武器娘,白发,#剑士
90212924

Ao - 凪白みと的插画
Ao by 凪白みと <div class="info"><p>
原创7500收藏,腋下,armed girls,#白发,swordsman
#オリジナル7500users入り,腋,#武器娘,白发,#剑士
90212924
作者: newswan    时间: 2021-6-3 22:20

本帖最后由 newswan 于 2021-6-3 22:28 编辑

回复 22# netdzb


    有#号的连续行,先合为一行,然后,按 "," 分段,去掉没#的段,有#的段去掉#
作者: WHY    时间: 2021-6-4 23:01

  1. $arr = gc a.txt -ReadCount 0;
  2. $str = '';
  3. [Collections.ArrayList]$res = @();
  4. $count = $arr.Count;
  5. for ($i=0; $i -lt $count; $i++) {
  6.     if ($arr[$i].indexOf('#') -ge 0){
  7.         $str += $arr[$i] + ',';
  8.     } else {
  9.         if ($str -ne ''){
  10.             $str = ($str -split ',') -match '^#' -replace '^#' -join ',';
  11.             [void]$res.Add($str);
  12.             $str = '';
  13.         }
  14.         [void]$res.Add($arr[$i]);
  15.     }
  16. }
  17. sc b.txt $res;
  18. echo 'Done';
  19. [Console]::ReadKey();
复制代码

作者: qixiaobin0715    时间: 2021-6-5 09:08

回复 19# 灯塔彭于晏
实际上6楼代码并不完美,有局限性:第3/4行以逗号分组的个数不能超过9个并且相等,否则会出现问题。
作者: 灯塔彭于晏    时间: 2021-6-5 13:00

回复 25# qixiaobin0715


    怪不得,我昨天~一定概率的情况下又乱了。我和我的朋友都表示无能为力,也没好意思再来发贴问。既然如此,我就顺着这个思路去安排逗号的内容。谢谢给出思路,谢谢!
作者: qixiaobin0715    时间: 2021-6-5 16:15

回复 26# 灯塔彭于晏
已修改
作者: 灯塔彭于晏    时间: 2021-6-5 21:34

回复 24# WHY


    您好,WHY大哥哥,您的代码一直效率很高。不知道能不能额外咨询一个功能的代码?

现有文件夹 A ,里面有约200张图片,图片名字的格式为: xxxx_p0 【xxxx是纯数字】。图片的格式为JPG 和 PNG 都有。

请问能否用JS的形式,跑一遍所有图片的分辨率,然后把【宽度大于 1700px ,高度大于1000px】的图片的完整名字(如  xxxx_p0.jpg/png ) ,以列表的形式输出到桌面的新文本 C.TXT中。
如:
12334_p0.jpg
2345_p0.png
1223_p0.jpg
……


谢谢您了。
作者: 灯塔彭于晏    时间: 2021-6-5 23:16

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

回复 27# qixiaobin0715


    哈哈哈,谢谢~ ~ ~

再帮我一下下吧,谢谢。 现在的代码输出完结果后,会变成下面的结果:
  1. 少女 祢豆子 - Vardan的[%]插画
  2. <div class="tip2"><div class="good2pic">系统警告 : 祢豆子使出了水之呼吸<p><p>#版权由 Dreamy商家 拥有 禁止商业用途 <div class="user-info"><div class="user-icon" style=" background-image:url('https://baidu.com/touxiang/20578368_7ebce48918498a5bef3b5cffb36d4261_170.jpg')"></div><div class="description"><div class="user-name submit-comment">[Pixiv]Vardanの作品 - P站ID:4346254</div></div></div></div></div><div class="info"><p>少女 祢豆子 - Vardan的插画 ~ Pixiv ArtWorks Id:75102802 ~ 分辨率:@@</p></div><p><img src="https://baidu.com/small/75102802.jpg"/></p>
  3. ,    ,   祢豆子队士   ,   日本刀   ,   灶门祢豆子   ,   鬼灭之刃   ,   同人,   涂鸦   ,   女孩,   少女,
  4. 75102802
  5. 原神 来一份冷肉拼盘 - 芒果猫Official的[%]插画
  6. <div class="tip2"><div class="good2pic">No.022<p>来一份冷肉拼盘<p>蔚蓝的天空,宁静的午后,<p>在蒙德的鹿猎人落座,荧犹豫着菜单上一个个菜名<p>香肠、火腿和培根,究竟哪个更美味?<p>精选各部位的兽肉绞碎成肉糜,<p>再精心调和制成的香肠无疑是肉食者的福音,<p>但是风干得恰到好处,纤维分明的火腿也让人欲罢不能。<p>油脂丰厚,让人食指大动的培根,<p>更是能为任何菜肴增色如果同样的问题也困扰着身为肉食者的你,<p>猎鹿人的冷肉拼盘就是完美的答案<p>派蒙留着口水说到:旅行者来一份冷肉拼盘吧。<p>荧:貌似主厨有事今天的厨师是来帮忙打工的香菱。<p>派蒙:啊香菱吗?派蒙有点担心。<p>荧:只是冷菜应该没什么问题吧,可以再来一杯果汁。<p>派蒙:派蒙赞同<p>派蒙:今天那个红色的家伙好像去林子里转悠了呢。不知道在想什么鬼点子。<p>荧:红色的家伙?哦你是说可莉吧,她和我说想去奔狼领串门了说说是找雷泽借秘密道具。<p>香菱:来啦来啦冷肉拼盘和果汁,我把肉都捏一起了吃起来口感保证很好。<p>派蒙:啊这 <div class="user-info"><div class="user-icon" style=" background-image:url('https://baidu.com/touxiang/20160870_9df887d2fd92b07200c1d38da8bb76d6_170.jpg')"></div><div class="description"><div class="user-name submit-comment">[Pixiv]芒果猫Officialの作品 - P站ID:40551423</div></div></div></div></div><div class="info"><p>原神 来一份冷肉拼盘 - 芒果猫Official的插画 ~ Pixiv ArtWorks Id:85612639 ~ 分辨率:@@</p></div><p><img src="https://baidu.com/small/85612639.jpg"/></p>
  7. ,   派蒙   ,原神   ,   ,   女孩,   长筒靴   ,   背景,   同人,   少女,   荧,原神   ,   原神   ,
  8. 85612639
  9. 黒发 2019/12/06 - sunhyunそんひょん的[%]插画
  10. <div class="tip2"><div class="good2pic">主页:twitter.com/sunhyun3715<p>3406 <div class="user-info"><div class="user-icon" style=" background-image:url('https://baidu.com/touxiang/15655575_45d9176d993097d12f900deb40a40ea6_170.jpg')"></div><div class="description"><div class="user-name submit-comment">[Pixiv]sunhyunそんひょんの作品 - P站ID:29362997</div></div></div></div></div><div class="info"><p>黒发 2019/12/06 - sunhyunそんひょん的插画 ~ Pixiv ArtWorks Id:78156644 ~ 分辨率:@@</p></div><p><img src="https://baidu.com/small/78156644.jpg"/></p>
  11. ,   一年   ,   萌袖      ,   少女   ,   女孩,   女高中生   ,   黑发   ,
  12. 78156644
复制代码
在每组的第一行处,有一个[%]的位置。
我们现在再标记一些#号字,这次是每组的第3行中,只会有1个#号字符。比如:
  1. 少女 祢豆子 - Vardan的[%]插画
  2. <div class="tip2"><div class="good2pic">系统警告 : 祢豆子使出了水之呼吸<p><p>#版权由 Dreamy商家 拥有 禁止商业用途 <div class="user-info"><div class="user-icon" style=" background-image:url('https://baidu.com/touxiang/20578368_7ebce48918498a5bef3b5cffb36d4261_170.jpg')"></div><div class="description"><div class="user-name submit-comment">[Pixiv]Vardanの作品 - P站ID:4346254</div></div></div></div></div><div class="info"><p>少女 祢豆子 - Vardan的插画 ~ Pixiv ArtWorks Id:75102802 ~ 分辨率:@@</p></div><p><img src="https://baidu.com/small/75102802.jpg"/></p>
  3. ,    ,   祢豆子队士   ,   日本刀   ,   #灶门祢豆子   ,   鬼灭之刃   ,   同人,   涂鸦   ,   女孩,   少女,
  4. 75102802
复制代码
请问。怎么样把#号标记的词,复制到[%]处,而#号词不会消失(相当于复制)。但#号会消失。
谢谢~效果如下:
  1. 少女 祢豆子 - Vardan的灶门祢豆子插画
  2. <div class="tip2"><div class="good2pic">系统警告 : 祢豆子使出了水之呼吸<p><p>#版权由 Dreamy商家 拥有 禁止商业用途 <div class="user-info"><div class="user-icon" style=" background-image:url('https://baidu.com/touxiang/20578368_7ebce48918498a5bef3b5cffb36d4261_170.jpg')"></div><div class="description"><div class="user-name submit-comment">[Pixiv]Vardanの作品 - P站ID:4346254</div></div></div></div></div><div class="info"><p>少女 祢豆子 - Vardan的插画 ~ Pixiv ArtWorks Id:75102802 ~ 分辨率:@@</p></div><p><img src="https://baidu.com/small/75102802.jpg"/></p>
  3. ,    ,   祢豆子队士   ,   日本刀   ,   灶门祢豆子   ,   鬼灭之刃   ,   同人,   涂鸦   ,   女孩,   少女,
  4. 75102802
复制代码
表达能力有限,我可以再编辑~!
作者: 灯塔彭于晏    时间: 2021-6-6 16:03

回复 27# qixiaobin0715
  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
复制代码
请帮帮忙, 上面是4组内容(每组4行,每组之间没有空行)。 每组内容中的第三行,有一个词是被#标记的。 请将每组内容中的#号词,复制到每组内容的第一行中的  [@@]处。
但被标记的#号词 并不消失。但#号会消失。

谢谢
作者: 灯塔彭于晏    时间: 2021-6-6 18:42     标题: 【已解决】 求助特定字符复制到指定位置的代码。 谢谢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

【第三行的每个 , 逗号之间,会存在空格】
作者: WHY    时间: 2021-6-6 19:00

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

作者: WHY    时间: 2021-6-6 19:03

本帖最后由 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')
复制代码

作者: 灯塔彭于晏    时间: 2021-6-7 11:11

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

回复 34# WHY


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

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

谢谢!谢谢!
作者: WHY    时间: 2021-6-7 12:38

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

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

作者: 灯塔彭于晏    时间: 2021-7-11 12:23

回复 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个位置,谢谢您啦。 周末愉快!
作者: WHY    时间: 2021-7-12 23:13

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

作者: 灯塔彭于晏    时间: 2021-7-17 00:28

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

谢谢您啦。
作者: WHY    时间: 2021-7-18 10:35

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

作者: cmd1152    时间: 2021-7-18 13:02

回复 13# qixiaobin0715


    什么是伸手党




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2