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

评分人数

TOP

回复 25# qixiaobin0715


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

TOP

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

TOP

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

评分人数

    • 灯塔彭于晏: 虽然没试还,但WHY大giegie的代码每次都是6 ...技术 + 1

TOP

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

回复 22# netdzb


    有#号的连续行,先合为一行,然后,按 "," 分段,去掉没#的段,有#的段去掉#

TOP

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

TOP

回复 18# newswan


我看了半天,都没看懂他要做什么?我想测试一下你的powershell的代码了。

TOP

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

评分人数

TOP

回复 16# qixiaobin0715

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

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

还请您保存一下,谢谢。
我这边上传附件总失败。

TOP

本帖最后由 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 处理包含#的行,思路更简单,先合并包含#相邻的行,再处理带#的行
1

评分人数

    • netdzb: powershell来做运维也是挺方便的啊。技术 + 1

TOP

回复 16# qixiaobin0715


    好的。我再试试把3 4行都加上#, 试试我的这个想法是不是主要原因。如果还不行,我就发给您看看文案~

TOP

回复 15# 灯塔彭于晏
应当是源文件出现问题了,自己检查一下,看看是什么情况。把出问题的组发上来看看。

TOP

回复 6# qixiaobin0715


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

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

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

能否帮忙解决一下?
谢谢!

TOP

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

回复 12# 灯塔彭于晏

我希望能看到你求助贴的半自动模式,我现在主题大都
是半自动模式。别人回复解决了问题,我是在进步的。
你的进步速度一直是零,看的真是让人着急。

TOP

当初我也当过2年伸手党

TOP

返回列表