Board logo

标题: [文本处理] 批处理如何统计出某位歌手唱了几首歌曲 [打印本页]

作者: netdzb    时间: 2021-1-14 17:13     标题: 批处理如何统计出某位歌手唱了几首歌曲

比如文本文件内容如下:

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

要求打印出
歌手1 然后紧跟他唱过的歌
歌手2 然后近跟他唱过的歌
批处理能做到吗
作者: lancer    时间: 2021-1-14 19:44

你这个何必要弄批处理呢,直接弄到Excel里,一下子就统计出来了。
作者: netdzb    时间: 2021-1-14 20:07

回复 2# lancer

我不是练手学习吗?批处理不用安装软件啊。有的地方没有excel也没有python所以想试试批处理。
作者: lancer    时间: 2021-1-14 21:09

回复 3# netdzb


    既然是练手学习,那你的这个功能需求,写了多少出来了,可以先发出来给大家看一下
作者: 路过    时间: 2021-1-14 22:00

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

作者: lancer    时间: 2021-1-14 22:39

回复 5# 路过


    有几个疑惑的地方.%%a为什么是有个点啊,第二个for循环里的set .又是什么意思呢
作者: qixiaobin0715    时间: 2021-1-14 22:48

本帖最后由 qixiaobin0715 于 2021-1-14 22:50 编辑

在3、4之间加一行:set .
运行批处理就知道了
显示以.开头的变量
作者: lancer    时间: 2021-1-14 22:54

回复 7# qixiaobin0715


    .%%a是代表以点开头的变量%%a
那.%%a与%%a的区别是什么
作者: 路过    时间: 2021-1-14 22:57

回复 8# lancer
其实你可以把"."换成其他字符,之所以选择".",是因为正常运行的批处理程序没有以"."开头的变量名。
作者: qixiaobin0715    时间: 2021-1-14 22:58

等号前面.%%a是变量名,后面%%a是变量.%%a的值。
作者: qixiaobin0715    时间: 2021-1-14 23:04

本帖最后由 qixiaobin0715 于 2021-1-14 23:07 编辑

你可以把每次循环的结果替换为具体值就好理解了,set .%%a=%%a相当于:
set .歌手1=歌手1
set .歌手2=歌手2
。。。。
作者: Batcher    时间: 2021-1-14 23:11

回复 8# lancer


可以参考 set 命令教程第11页:
http://bbs.bathome.net/thread-31727-1-1.html
作者: lancer    时间: 2021-1-14 23:14

回复 9# 路过


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




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