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

[问题求助] 如何用powershell将一个csv文件平均分成N份并保留标题头

[复制链接]
 楼主| 发表于 2021-12-21 12:30:48 | 显示全部楼层
回复 5# idwma


   你好, 怎样在均分时把生成的csv文件名的格式改为:  新csv文件内容中的, 第一首歌曲序号-最后一首歌曲序号
# 例如: 分成两份
# 第一个csv文件的名字就是  1-5.csv
# 第二个csv文件的名字就是  6-9.csv

原代码:

#@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
$d="abc.csv"
$a=type $d
$b=2
[int]$c=$a.count/$b
for($i=1;$i -lt $a.count;$i+=$c){
sc ("{0}-{1:d3}.txt" -f $d,$f++) ($a[0],$a[$i..($i+$c-1)])
}

原csv文件内容如下:

排序,语言,歌手,歌名
1,国语,付雪,金玉良缘
2,国语,阿吉太组合,阿衣莫
3,国语,洛先生,孤城
4,国语,刘艺雯,听闻远方有你
5,国语,海来阿木,五十年以后
6,国语,海来阿木,浮生记
7,国语,杨小壮,最后的人
8,国语,莫叫姐姐,你能不能不要离开我 (莫叫语版)
9,国语,郁可唯,路过人间
发表于 2021-12-21 15:32:21 | 显示全部楼层
回复 16# 5i365
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $d="abc.csv"
  3. $a=type $d
  4. $b=2
  5. [int]$c=$a.count/$b
  6. for($i=1;$i -lt $a.count;$i+=$c){
  7. sc ("{0}-{1}.csv" -f ($a[$i] -replace '^(\d+),.*','$1'),($a[$i..($i+$c-1)][-1] -replace '^(\d+),.*','$1')) ($a[0],$a[$i..($i+$c-1)])
  8. }
复制代码

评分

参与人数 1技术 +1 收起 理由
5i365 + 1 厉害

查看全部评分

 楼主| 发表于 2021-12-21 18:37:19 | 显示全部楼层
本帖最后由 5i365 于 2021-12-21 18:39 编辑

回复 17# idwma


    后面部分看不太懂, 但大概意思懂, 应该是用替换的方法取值给文件名,

但总是但心, 这种方法不稳, 比如, 文件名中出现了符号, 空格组合什么的,

要是能分解为几步明了的步骤就好多了,
发表于 2021-12-21 19:22:17 | 显示全部楼层
做总是比说来的实在。把想得的特殊字符加入文本中测试即可。
发表于 2021-12-21 19:52:57 | 显示全部楼层
回复 18# 5i365


很好懂呀,第7行只有3个知识点
格式字符串,正则,数组
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:48 , Processed in 0.020299 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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