本帖最后由 5i365 于 2022-1-21 19:07 编辑
回复 21# idwma
您好, 现在有两个问题想请教
1.有时获取的.txt文件中,例如下面的示例, 数字并不全是在开头, 而是在一行的中间[如下面的32]或结尾[如下面的28], 怎样设置三个筛选开关分别对应三种情况? 例如, 我只想筛选结尾的数字时就将其开关打开
--------------------------------------------------------------------
58有问题
80伴奏有问题 需要重新下载正确的
正确的32, 错误的28
132没有伴奏
2.txt文件, 可能在不同的文件夹中, 想在导出的csv文件名前,加上其所在的文件夹名
例如导出的 歌词.csv 文件, 他是筛选的 1号 文件夹下的, 名字就改为 1号_歌词.csv
--------------------------------------------------------------------------------------------------------------------------------------
要修改的代码, 及文件 https://send.cm/d/84IN- #@&cls&powershell -version 2.0 "type '%~0'|out-string|iex"&pause&exit
- $a=@{}
- $f=gc 歌单.csv -Encoding UTF8
- $f|%{
- $z=$_ -replace '^(\d+).*','$1'
- if (!($a.ContainsKey($z))){$a.$z=$_}
- }
- $b=@{}
- $d=@{}
- dir ".\任务" -recu * -inc *原唱*.txt,*伴奏*.txt,*歌词*.txt|%{
- if($_ -match '(原唱|伴奏|歌词)'){$c=$Matches[0]}
- foreach($i in gc $_){
- if($i -match '\d'){
- $z=$i -replace '\D*(\d+)\D*','$1'
- if(!($b.ContainsKey($z))){$b.$z=$a.$z;$d.$c+=@($a.$z)}
- }
- }
- #if($b.ContainsKey($z)){sc $_ ''} #清空
- #$z=-1 #清空
- }
- $d.keys|%{sc -Encoding UTF8 $($_+'.csv') ($f[0],($d.$_|sort{[int]($_ -split ',')[0]}))}
复制代码 |