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

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

比如文本文件内容如下:

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

要求打印出
歌手1 然后紧跟他唱过的歌
歌手2 然后近跟他唱过的歌
批处理能做到吗

你这个何必要弄批处理呢,直接弄到Excel里,一下子就统计出来了。

TOP

回复 2# lancer

我不是练手学习吗?批处理不用安装软件啊。有的地方没有excel也没有python所以想试试批处理。

TOP

回复 3# netdzb


    既然是练手学习,那你的这个功能需求,写了多少出来了,可以先发出来给大家看一下

TOP

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

TOP

回复 5# 路过


    有几个疑惑的地方.%%a为什么是有个点啊,第二个for循环里的set .又是什么意思呢

TOP

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

在3、4之间加一行:set .
运行批处理就知道了
显示以.开头的变量

TOP

回复 7# qixiaobin0715


    .%%a是代表以点开头的变量%%a
那.%%a与%%a的区别是什么

TOP

回复 8# lancer
其实你可以把"."换成其他字符,之所以选择".",是因为正常运行的批处理程序没有以"."开头的变量名。

TOP

等号前面.%%a是变量名,后面%%a是变量.%%a的值。

TOP

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

你可以把每次循环的结果替换为具体值就好理解了,set .%%a=%%a相当于:
set .歌手1=歌手1
set .歌手2=歌手2
。。。。

TOP

回复 8# lancer


可以参考 set 命令教程第11页:
http://bbs.bathome.net/thread-31727-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# 路过


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

TOP

返回列表