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

[文本处理] 批处理如何统计出某位歌手唱了几首歌曲

[复制链接]
发表于 2021-1-14 17:13:46 | 显示全部楼层 |阅读模式
比如文本文件内容如下:

歌手1 - 歌名1
歌手2 - 歌名2
歌手1 - 歌名3
歌手3 - 歌名4
......

要求打印出
歌手1 然后紧跟他唱过的歌
歌手2 然后近跟他唱过的歌
批处理能做到吗
发表于 2021-1-14 19:44:57 | 显示全部楼层
你这个何必要弄批处理呢,直接弄到Excel里,一下子就统计出来了。
 楼主| 发表于 2021-1-14 20:07:31 | 显示全部楼层
回复 2# lancer

我不是练手学习吗?批处理不用安装软件啊。有的地方没有excel也没有python所以想试试批处理。
发表于 2021-1-14 21:09:36 | 显示全部楼层
回复 3# netdzb


    既然是练手学习,那你的这个功能需求,写了多少出来了,可以先发出来给大家看一下
发表于 2021-1-14 22:00:24 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=- tokens=1,2" %%a in (文本.txt) do (if not defined .%%a (set .%%a=%%b) else (set .%%a=!.%%a!#%%b))
  4. for /f "delims== tokens=1,2" %%a in ('set .') do (set w=%%a
  5. echo;!w:~1!:%%b)
  6. pause
复制代码
发表于 2021-1-14 22:39:56 | 显示全部楼层
回复 5# 路过


    有几个疑惑的地方.%%a为什么是有个点啊,第二个for循环里的set .又是什么意思呢
发表于 2021-1-14 22:48:17 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-1-14 22:50 编辑

在3、4之间加一行:set .
运行批处理就知道了
显示以.开头的变量
发表于 2021-1-14 22:54:31 | 显示全部楼层
回复 7# qixiaobin0715


    .%%a是代表以点开头的变量%%a
那.%%a与%%a的区别是什么
发表于 2021-1-14 22:57:13 | 显示全部楼层
回复 8# lancer
其实你可以把"."换成其他字符,之所以选择".",是因为正常运行的批处理程序没有以"."开头的变量名。
发表于 2021-1-14 22:58:30 | 显示全部楼层
等号前面.%%a是变量名,后面%%a是变量.%%a的值。
发表于 2021-1-14 23:04:38 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-1-14 23:07 编辑

你可以把每次循环的结果替换为具体值就好理解了,set .%%a=%%a相当于:
set .歌手1=歌手1
set .歌手2=歌手2
。。。。
发表于 2021-1-14 23:11:11 | 显示全部楼层
回复 8# lancer


可以参考 set 命令教程第11页:
http://bbs.bathome.net/thread-31727-1-1.html
发表于 2021-1-14 23:14:18 | 显示全部楼层
回复 9# 路过


    懂了,看了后面各位热心兄弟的解答,理解了。也发现了你这种方式的妙用,我以前还真不知道变量还可以这样用,你这种实际上就是一种动态变量了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 10:07 , Processed in 0.021846 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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